Вопросы с тегами [many-to-many]

0

голосов
0

ответ
5

Просмотры

Как запросить неявный через таблицу в Джанго (поле ManyToMany)?

В документации Джанго он читает следующее: Если вы не укажете явными через модель, есть еще неявный через модель класс можно использовать для прямого доступа к таблице, созданную для хранения ассоциации. Тем не менее, я не могу узнать, как я могу получить доступ к этой таблице. Скажем, у меня есть эта структура: класс Person (models.Model): Имя = models.CharField (max_length = 50) класс группы (models.Model): Имя = models.CharField (MAX_LENGTH = 128) члены = models.ManyToManyField (Person) И я хотел бы, чтобы запросить таблицу, которая удерживает person_groups (неявного через таблицу) ... как мне это сделать? PersonGroup.objects.all () Это не работает, и я не могу найти то, что синтаксис, я должен использовать.
user
1

голосов
1

ответ
33

Просмотры

Найти модели, которые имеют только одну конкретную модель связанной

Рассмотрим следующие модели: класс продукта (models.Model): Имя = models.CharField (max_length = ...) класс Размер (models.Model): Имя = models.CharField (max_length = ...) продукция = models.ManyToManyField (продукт, через = ProductXSize, related_name = 'размеров', related_query_name = 'размер') класс ProductXSize (models.Model): продукт = models.ForeignKey (продукт, on_delete = models.CASCADE, related_name = 'productxsizes', related_query_name =» productxsize ') размер = models.ForeignKey (размер, on_delete = models.CASCADE, related_name =' productxsizes', related_query_name = 'productxsize') То, что я хотел бы достичь вдоль линий: для р в Product.objects.filter (размеры = [Size.object.get (...)]): ... То есть, найти продукты, которые имеют один размер и определенный в этом.
x-yuri
1

голосов
2

ответ
544

Просмотры

Добавление столбца в многие ко многим автогенерируемая таблицы

У меня есть объекты класса и ученика. Обе коллекции есть другая собственность. Которая автоматически создает многие ко многим таблицы. Есть ли способ, чтобы добавить столбец в этой таблице, которая относится к отношениям, не создавая много-ко-многим таблице сам?
Haimon
1

голосов
0

ответ
68

Просмотры

Java: Как Карта отношения многие ко многим в весеннем загрузки

У меня есть два объекта, места проведения и спорта, и они haveManyToMany отношения, Сначала я нанесем это соотношение на стороне Venue и теперь я хочу, чтобы получить Спорт с места, так что я хочу поставить отношения с обеих сторон, как OneToMnay и ManyToOne отношений в следующей сущности, но это дает мне следующее сообщение об ошибке Может кто-нибудь выяснить этот вопрос? Sport.class @Entity общественного класса Sport реализует Serializable {частный статический окончательный длинный serialVersionUID = 1L; @Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частный длинный идентификатор; частное имя строки; @OneToOne (mappedBy = "спорт", targetEntity = SportPhoto.class) частное SportPhoto sportPhoto; @OneToMany (mappedBy = "спорт", targetEntity = Session.class) частная сессия Список; // это дает ошибку при добавлении этих строк @ManyToMany (mappedBy = «спорт», принеси = FetchType. Нетерпеливое) частное Установить место; // добытчиками и сеттеров} Venue.class @Entity общественного класса Venue {@Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частный длинный идентификатор; @Column (обнуляемое = ложь) частное имя строки; частное ИНТ maxCapacity; частный двухместный размер; частная строка MapName; @Enumerated (EnumType.STRING) частное ContractType contractType; @Enumerated (EnumType.STRING) частное ContractDuration contractDuration; частное ContractDetails строк; @Column (обнуляемый = ложь) частный адрес строки; частная строка venueContactNumber; @JsonDeserialize (с использованием = CustomDateDeserializer.class) @JsonSerialize (с использованием = CustomDateSerializer.class) частная Дата contractExpireDate; включен частный Boolean = истина; частная двойная широта; частная двойная долгота; @ManyToMany частный набор спорта; @OneToMany (mappedBy = "выставки", targetEntity = VenuePhoto.class) приватный Список venuePhotos; @OneToMany (mappedBy = "выставка", targetEntity = Session.class) частные сессии Списка; // методы получения и установки} Ошибка, вызванная: org.hibernate.tool.schema.spi.SchemaManagementException: Невозможно выполнить управление схемы для целевого JDBC [изменить таблицу venue_sport добавить ограничение FKtoqu08gw87dp96xwtvn1ejl27 место проведения внешнего ключа (venues_id) ссылки (идентификатор)] в орг .hibernate.tool.schema.internal.TargetDatabaseImpl.accept (TargetDatabaseImpl.java:59) ~ [гибернации-ядро-5.0.12.Final.jar: 5.0.12.Final] на org.hibernate.tool.schema.internal. SchemaMigratorImpl.applySqlString (SchemaMigratorImpl.java:431) ~ [гибернации-ядро-5.0.12.Final.jar: 5.0.12.Final] на org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings (SchemaMigratorImpl.java:420 ) ~ [спящий режим-ядро-5.0.12.Final.jar: 5.0.12.
SFAH
1

голосов
0

ответ
122

Просмотры

Entity Framework Group Join on a Many To Many Relationship

I have a Campaign Table and a Group table with a many to many relationship. I also have a CampaignGroup table which serves the xref table between the two. I want to do a group join from Campaign to Group so that I end up with an object that looks like: public Campaign Campaign {get;set;} public List Groups {get;set;} Due to reasons beyond my control, I cannot use Entity Framework's Include feature. If I can do a Group Join from Campaign to CampaignGroup like this: _dbContext.Campaigns.GroupJoin(_dbContext.CampginGroup, c => c.CampaignId, cg => cg.CampaignId, (c, cg) => new { Campaign = c, CampaignGroups = cg } But that gives me an object that looks like: public Campaign Campaign {get;set;} public List CampaignGroups {get;set;} How do I take this GroupJoin to the next level and get just the group? I tried this, but when it executes Entity Framework warns me that it can't be evaluated and will be performed locally which kills the performance: var campaignGroupQuery = _dbContext.CampaignGroup.Join( _dbContext.Group, cg=> cg.GroupId, g=> g.GroupId, (cg, g) => new { CampaignId = cg.CampaignId, Group= g }); return _dbContext.Campaigns.GroupJoin(campaignGroupQuery, campaign => campaign.JlmReferenceId, cg=> cg.JlmReferenceId, (campaign, cg) => new { Campaign = campaign, Groups = cg.Select(cg => cg.Group) }); Any help would be appreciated. Thanks!
jkruer01
1

голосов
0

ответ
34

Просмотры

DRF добавить данные в сериализатором из URL

Я пытаюсь создать новый объект в Viewset с помощью kwargs, что я получаю от URL. Я попытался прохождения тех, с контекстом, однако is_valid потребности называться первым в целях экономии. Я попытался с SerializerMethodField, но это блокируется требованиями М2М. Я пытаюсь использовать ModelSerializer, и я не хочу, чтобы сделать данные изменяемым. Защиту создавать (самостоятельно, запрос, * арг, ** kwargs): project_id = kwargs.get ( 'PROJECT_ID') startup_id = kwargs.get ( 'startup_id') self.user = request.user self.startup = Startup.objects. получить (рк = startup_id) self.project = Project.objects.get (рк = project_id) сериализатору = RatingSerializer (данные = request.data) serializer.is_valid (raise_exception = True) печати (serializer.data) self.perform_create (сериализатору) заголовки = self.get_success_headers (сериализатору. данные) возвращает ответ (serializer.data, статус = status.HTTP_201_CREATED, заголовки = заголовки) В моей модели у меня есть внешние ключи, а также m2m поле. рейтинг = IntegerField (по выбору = rating_choices) проект = ForeignKey (проект, on_delete = models.CASCADE) пользователь = ManyToManyField (Пользователь, related_name = 'пользователи') при запуске = ManyToManyField (Запуск, related_name = 'пользователей') Защита __str __ (самостоятельно): формат возвращать «Рейтинг {}». (self.rating) Мой вопрос заключается в том, как получить эти данные в сериализатором.
Paweł
1

голосов
1

ответ
50

Просмотры

Как я могу сделать калькулятор в SQL?

Так что у меня есть эта assingment в школе, был я должен сделать инструмент для ЕГО в фирме. Назначение выглядит следующим образом: «. Вы должны разработать приложение или онлайн-инструмент, где вы можете ввести статус многих деталей, что регламент гласит для компании предполагаемого пользователя инструмента является по защите персональных данных (ИЙ ) или сотрудник, ответственный за проекции данных в целом. инструмент должен быть в состоянии обрабатывать входные данные из более чем одной компании и более одного аудита для отдельной компании. инструмент должен быть в состоянии вычислить уровень соответствия к GDPR «. Так, как для калькулятора я думал о решении, где ДПО для данной компании, может дать один из 12 правил либо 1 или 0, где 1 является то, что регулирование соблюдается и 0 не является. Поэтому я хотел бы взять сумму, а затем разделить с 12, чтобы получить среднее число соответствия. Но как я могу это сделать в SQL? В настоящее время, я уже сделал Comany, аудитора и регулирования таблицы, которая выглядит следующим образом: CREATE TABLE IF NOT EXISTS`Companies` ( `idCompanies` INT NOT NULL,` cvr_nr` INT NULL, `Dato` ДАТА NULL, PRIMARY KEY ( `idCompanies`)) ДВИГАТЕЛЬ = InnoDB; CREATE TABLE IF NOT EXISTS `Auditors` (` idAuditors` INT NOT NULL, `Auditor_name` УАКСНАК (45) NULL, то первичный ключ (` idAuditors`)) ДВИГАТЕЛЬ = InnoDB; вставить в значение аудиторов (1, «Ларс Ларсен»); вставить в значение аудиторов (2, «Хенрик Андерсен»); вставить в значение аудиторов (3, «Дженс Андерсен»); падение стола, если существует правил; CREATE TABLE IF NOT EXISTS `Regulations` (` idRegulations` INT NOT NULL AUTO_INCREMENT, `Regulation_name` VARCHAR (100) NULL, `Regulation_details` УАКСНАК (400) NULL, то первичный ключ (` idRegulations`)) ДВИГАТЕЛЬ = InnoDB; вставить в значения правил (нуль «хх», «ххх»); вставить в значения правил (нуль «хх», «ххх»); #The XX лишь в качестве примеров. CREATE TABLE IF NOT EXISTS `Companies_has_Regulations` (` Companies_idCompanies` INT NOT NULL, `Regulations_idRegulations` INT NOT NULL, PRIMARY KEY (` Companies_idCompanies`, `Regulations_idRegulations`), INDEX` fk_Companies_has_Regulations_Regulations1_idx` ( `Regulations_idRegulations` ASC), INDEX` fk_Companies_has_Regulations_Companies1_idx` ( `Companies_idCompanies` ASC), скованность` fk_Companies_has_Regulations_Companies1` FOREIGN KEY ( `Companies_idCompanies`) ЛИТЕРАТУРА` Companies` ( `idCompanies`) НА УДАЛИТЬ никаких действий UPDATE NO ACTION,
Jake Long
1

голосов
1

ответ
91

Просмотры

Hibernate @ Много-ко-многим выборки с ассоциациями (StackOverflow)

Я получаю ошибку StackOverflow, если я установить режим выборки для EAGER, и если я не установлю EAGER он бросает другую ошибку. Как организовать двунаправленную связь перемещаться в обоих направлениях? @Entity @Table (имя = "test_users") общественный класс User реализует Serializable {Public User (имя String, Набор функций) {this.name = имя; this.roles = роли; } Общественности пользователя () {} @Id @GeneratedValue (стратегия = GenerationType.AUTO) частное ИНТ идентификатор; частное имя строки; @ManyToMany @JoinTable (имя = "test_join", joinColumns = @JoinColumn (имя = "user_id"), inverseJoinColumns = @JoinColumn (имя = "role_id")) частные Установка ролей = новый HashSet (); общественный ИНТ GetId () {возвращение идентификатор; } Общественного недействительными SETID (интермедиат ID) {this.id = ID; } Строка GetName () {имя общественного возврата; } Общественной недействительная SetName (имя String) {this.name = имя; } Общественного Set getRoles () {вернуть роли; } общественного недействительный setRoles (Установить роли) {this.roles = роль; } @Override общественного INT хэш-код () {INT хэш = 7; хэш = 31 * хэш + this.id; хэш = 31 * хэш + Objects.hashCode (this.name); хэш = 31 * хэш + Objects.hashCode (this.roles); возвращать хэш; } @Override общественных булевы равно (OBJ объекта) {если (== это объект) {возвращает истину; } Если (OBJ == NULL) {вернуться ложным; } Если (GetClass () = obj.getClass (!)) {Вернуться ложным; } Конечному пользователю другое = (Пользователь) OBJ; если (this.id! = другое. ID) {вернуться ложным; } Если {вернуться ложным (Objects.equals (this.name, other.name)!); } Если {вернуться ложным (Objects.equals (this.roles, other.roles)!); } Возвращает истину; } @Override общественности Строка ToString () {возвращение "Пользователь {" + "ID =" + + идентификатор "имя =" + имя + "роли =" + роли + '}'; }} @Entity @Table (имя = "test_roles") общественный класс Роль реализует Serializable {общественной роли (имя String, Set пользователей) {this.name = имя; this.users = пользователей; } Общественная роль () {} @Id @GeneratedValue (стратегия = GenerationType.AUTO) частное ИНТ идентификатор; частное имя строки; @ManyToMany @JoinTable (имя = "test_join", joinColumns = @JoinColumn (имя = "role_id"), inverseJoinColumns = @JoinColumn (имя = "user_id")) частные пользователи Set = новый HashSet (); общественный ИНТ GetId () {возвращение идентификатор; } Общественного недействительными SETID (интермедиат ID) {this.id = ID; } Строка GetName () {имя общественного возврата; } Общественной недействительная SetName (имя String) {this.name = имя; } Общественного Set getUsers () {вернуть пользователь; } общественного недействительный setUsers (набор пользователей) {this.users = пользователи; } @Override общественного INT хэш-код () {INT хэш = 7; хэш = 83 * хэш + this.id; хэш = 83 * хэш + Objects.hashCode (this.name); хэш = 83 * хэш + Objects.hashCode (this.users); возвращать хэш; } @Override общественных булевы равно (OBJ объекта) {если (== это объект) {возвращает истину; } Если (OBJ == NULL) {вернуться ложным; } Если (GetClass () = obj.getClass (!)) {Вернуться ложным; } Конечная роль друга = (Роль) OBJ; если (! this.id = other.id) {вернуться ложным; } Если {вернуться ложным (Objects.equals (this.name, other.name)!); } Если {вернуться ложным (Objects.equals (this.users, other.users)!); } Возвращает истину; } @Override общественности Строка ToString () {возвращение "Роль {" + "ID =" + + идентификатор "имя =" + имя + "пользователи =" + пользователей + '}'; }} @Repository (значение = "userdao" ) @Transactional общественного класса UserDaoImpl реализует UserDao {общественного UserDaoImpl (SessionFactory SessionFactory) {this.sessionFactory = SessionFactory; } Общественного UserDaoImpl () {} @Autowired частное SessionFactory SessionFactory; общественный SessionFactory getSessionFactory () {вернуться SessionFactory; } Общественного недействительными setSessionFactory (SessionFactory SessionFactory) {this.sessionFactory = SessionFactory; } Частная сессия currentSession () {вернуться sessionFactory.getCurrentSession (); .} @Override общественный недействительный AddUser (пользователь Пользователь) {currentSession (), за исключение (пользователь); } @Override @Transactional (ReadOnly = True) Список getAllUsers общественного () {возвращение currentSession () CreateQuery ( "FROM пользователя и") список ()..; } @Override общественное недействительный updateUser (пользователь Пользователь) {currentSession () обновление (пользователь). .} @Override общественный недействительный deleteUser (пользователь Пользователь) {currentSession () удалить (пользователь); } @Override общественного getUserByName пользователя (имя String) {возвращение (Пользователь) currentSession () CreateQuery ( "FROM User WHERE имя = '" + имя + "'") .uniqueResult (). } @Override Public User getUserById (интермедиат ID) {возвращение (Пользователь) currentSession () CreateQuery ( "ОТ пользователя, где идентификатор =" + ID) .uniqueResult (). }} Общественного класса Основное {государственной статической силы основных (String [] арг) {UserDao userDao = (UserDao) SpringContext.getContext () getBean ( "userdao"). Список пользователей = userDao.getAllUsers (); для (пользователя User: пользователи) {System.out.println (пользователь);
Ivan Burlyaev
1

голосов
1

ответ
68

Просмотры

Джанго: Доступ к ForeignKey полей и создание новых отношений, основанных на них

Я хочу, чтобы установить схему базы данных таким образом, что каждое сообщение знает, кто его получатели находятся в комнате, что она принадлежит и как-то хранит ли каждый член в этой комнате уже «видел» сообщение. Я имею трудное время, пытаясь понять, как я мог заставить его работать. Заранее спасибо! Ahmed
Ahmed Ishtiaque
1

голосов
1

ответ
35

Просмотры

Использование Django ManyToMany симметричного свойства построить переходную зависимость

Можно ли использовать симметричное свойство от models.ManyToManyField, так что я могу создать переходную зависимость между записями? Например, в моем коде у меня есть: класс User (models.Model): сайт = models.ForeignKey ( 'myapp.Website') related_users = models.ManyToManyField ( 'я', related_name = 'пользователей', симметричная = True) Когда я: user_a.related_users.add (пользователь B) user_a.related_users.all () # возвращает пользователю B user_b.related_users.all () # возвращает пользователю все работает, как ожидается, здесь, отношения симметричны. Но когда я делаю: user_b.related_users.add (Пользователь) user_b.related_users.all () # возвращает пользователь A и пользователь C user_c.related_users.all () # возвращает пользователь BI хочет пользователь C вернуть пользователь A и пользователь B автоматически, потому что пользователь С пользователь в, который пользователь А, следовательно, пользователь С пользователь А тоже.
user2937998
1

голосов
1

ответ
242

Просмотры

Лучшие практики с идентификаторами многих ко многим таблицам

У меня есть некоторые сомнения, с многими ко многим таблиц идентификаторов (первичный ключ). Многие-ко-многим состоит, в соответствии с документацией Laravel, двух моделей и трех таблиц. Каждая модель имеет свою соответствующую таблицу, а промежуточная таблица имеет как поля: Auto-пошаговый ID table1_id table2_id other_attributes ... До сих пор все хорошо. Я уже использовал его много, доступ к полям с хелперами «» поворотом и обновлением их с «updateExistingPivot» и многим другим. У меня есть вопрос, является ли это стоит воспользоваться идентификатором промежуточной таблицы, таких как FK от атрибутов других таблиц. Пример: В моем приложении, у меня есть эти модели: машины Restriction продукта и эти четыре таблиц: машины (номер, имя, ...) [машина] продукты (ID, имя, ...) [Product] machine_products (идентификатор, machine_id [FK], product_id [FK], цена) [без ограничений] модели (ID, machine_product_id [FK], день, begin_hour, end_hour) [Ограничение] Учитывая конкретную машину и продукт, Есть N ограничений. Одно ограничение относится к одной конкретной машине и продукту. Как вы можете видеть, я воспользовался autoincremental ID (первичный ключ из промежуточной таблицы), чтобы связать ограничения. Но таким образом, работая с красноречивым немного странно, как доступом к Restriction из машины / продукта, или наоборот, не так просто: Ограничение :: где ( «machine_product_id», машина :: найти (1) -> продуктов ( ) -> первый () -> pivot-> идентификатор); Если бы я получить продукт или машину из данного ограничения, я должен был бы найти «machine_id» и «product_id» из строки с machine_product_id рестрикционной, что я имел. Я не» знает, если по вопросам практичности и функциональности при работе с красноречивым было бы лучше сделать две многой-ко-многим таблицы с machine_id и product_id, один с ценой (machine_products), а другой с днем, begin_hour, end_hour (ограничения) , Первая таблица будет от 1 до 1 (machine_products), а другой от 1 до N (ограничений). Я имею в виду: machine_products бы только одна цена, учитывая специфический machine_id и product_id. ограничения будут иметь N строк из множества, состоящего из день, begin_hour, end_hour, учитывая специфический machine_id и product_id. Или было бы лучше, если бы я сделать модель под названием MachineProduct? Я не знаю ... Не могли бы вы сказать мне или рекомендовать лучший способ решить эту дилемму? Уже модификация таблицы, модель, или все, что нужно. Спасибо.
sevenlops
1

голосов
0

ответ
20

Просмотры

Problem with MySQL query with days and time range

У меня есть эти таблицы: машины (ID) продукции (номер, имя) machine_products (идентификатор, machine_id [FK], product_id [FK], цена) machine_product_restrictions (идентификатор, machine_product_id [FK], день, begin_hour, end_hour) Пояснения: Для 1 «машина» у меня есть N «machine_product» За 1 «продукта» у меня есть N «machine_product» За 1 «машина» и 1 «продукт» у меня есть 1 «machine_product» За 1 «machine_product» у меня есть «machine_product_restriction» N machine_product_restriction One» 'принадлежит 1 „machine_product“ Может быть, N „machine_product_restrictions“ 1 „“ machine_product с тем же днем ​​и Diferent диапазона времени. То, что я хочу запроса Просто я хочу, уникальные продукты конкретной машины (machine_id = 1) доступны NOW (в этот день недели [1-понедельник, 7-воскресенье], и за это время / час [HH: мм - 24ч]) с названием и ценой. То, что я пытался ВЫБЕРИТЕ P.id, P.name, MP.price из продуктов P РЕГИСТРИРУЙТЕСЬ machine_products MP на MP.product_id = P.id LEFT JOIN machine_product_restrictions R на MP.id = R.machine_product_id WHERE MP.machine_id = 1 AND (R .machine_product_id IS NULL ИЛИ (R.machine_product_id IS NOT NULL && (R.DAY = DAYOFWEEK (NOW ()) -1) && (ВРЕМЯ (NOW ()) НЕ между временем (R.begin_hour) и времени (R.end_hour) ))) Это не работает вообще, потому что возвращаешь меня неоднократные продукты, как «machine_product_restrictions» находится вне теперь интервала времени. Благодарю. ID LEFT JOIN machine_product_restrictions R на MP.id = R.machine_product_id ГДЕ MP.machine_id = 1 и (R.machine_product_id IS NULL ИЛИ (R.machine_product_id IS NOT NULL && (R.DAY = DAYOFWEEK (NOW ()) -1) && (TIME (NOW ()) NOT BETWEEN TIME (R.begin_hour) И вРЕМЯ (R.end_hour)))) Это не работает вообще, потому что возвращает мне неоднократных продукты, как 'machine_product_restrictions' находятся вне теперь интервала времени. Благодарю. ID LEFT JOIN machine_product_restrictions R на MP.id = R.machine_product_id ГДЕ MP.machine_id = 1 и (R.machine_product_id IS NULL ИЛИ (R.machine_product_id IS NOT NULL && (R.DAY = DAYOFWEEK (NOW ()) -1) && (TIME (NOW ()) NOT BETWEEN TIME (R.begin_hour) И вРЕМЯ (R.end_hour)))) Это не работает вообще, потому что возвращает мне неоднократных продукты, как 'machine_product_restrictions' находятся вне теперь интервала времени. Благодарю. т работа, так возвращает меня неоднократные продукты, как «machine_product_restrictions» находится вне теперь интервала времени. Благодарю. т работа, так возвращает меня неоднократные продукты, как «machine_product_restrictions» находится вне теперь интервала времени. Благодарю.
sevenlops
1

голосов
1

ответ
33

Просмотры

SQL Server 2008: many-to-many relationship: Concatenation in SELECT query [duplicate]

This question already has an answer here: How to make a query with group_concat in sql server [duplicate] 4 answers There are 3 tables: Project Tool LinkProjectTool I need a query that lists everything in the Project table plus an extra column called ProjectTools. This column should contain a comma delimited string with all the tool names belonging to each project. The data is: Table Project: ID Name Client ------------------------ 0 table Anna 1 chair Bobby 2 workbench James 3 window Jenny 4 shelves Matthew Table Tool: ID Name ------------------------ 0 hammer 1 measuring tape 2 pliers 3 scissors 4 spanner 5 saw 6 screwdriver Table LinkProjectTool: IDProject IDTool ------------------- 0 0 0 3 2 1 2 4 2 5 The result should be: ID Name Client ProjectTools ------------------------------------------------------------- 0 table Anna hammer, scissors 1 chair Bobby 2 workbench James measuring tape, spanner, saw 3 window Jenny 4 shelves Matthew Here are the queries I used to create these tables: CREATE TABLE [dbo].[Project] ( [ID] [int] NOT NULL, [Name] [nvarchar](15) NOT NULL, [Client] [nvarchar](15) NULL ) INSERT INTO [dbo].[Project] (ID, Name, Client) VALUES (0, 'table', 'Anna'), (1, 'chair', 'Bobby'), (2, 'workbench', 'James'), (3, 'window', 'Jenny'), (4, 'shelves', 'Matthew') CREATE TABLE [dbo].[Tool]( [ID] [tinyint] IDENTITY(0,1) NOT NULL, [Name] [nvarchar](30) NULL, CONSTRAINT [PK_Tool] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] INSERT INTO [dbo].Tool (Name) VALUES ('hammer'), ('measuring tape'), ('pliers'), ('scissors'), ('spanner'), ('saw'), ('screwdriver') CREATE TABLE [dbo].LinkProjectTool ( [IDProject] [int] NOT NULL, [IDTool] [tinyint] NULL ) INSERT INTO [dbo].LinkProjectTool (IDProject, IDTool) VALUES (0, 0), (0, 3), (2, 1), (2, 4), (2, 5) Could you, please, help? Thank you.
Ioan
1

голосов
1

ответ
19

Просмотры

django pre_save validation on m2m (many to many) fields

Извинения, если это было дан ответ раньше, но искали в течение нескольких часов. Я пытаюсь сделать проверку на остальной модели Джанго с полем МоГО. У меня есть модель, которая имеет роли, возложенные на него. У меня есть какая-то логика, если роли частично совпадают с моделями и поддержкой существующими хотели бы бросить ошибку проверки. Я попробовал pre_save сигнал, но, видимо, Джанго не назначает M2M, пока не сохранить (не идентификатор). Как получить доступ к pre_save данных? Вот модель: класс ActivityFactory (models.Model): «»»Это обеспечивает интервал, на котором ActivityDemands автоматически создаются и ActivityStudyHours (обратите внимание, что исследование активности часы могут быть устаревшими, как и все той же информации, уже хранится здесь) вместо традиционного метода inputing ActivityDemands в месяц. Продукт деятельности и ActivityDemand будет по-прежнему создавать StudySiteWorkloads. ""»Start_date = models.DateField () end_date = models.DateField () ч = models.DecimalField (max_digits = 5, decimal_places = 2) = отмечает models.TextField (пустой = True, нуль = True) активность = models.ForeignKey (активность, on_delete = models.CASCADE, related_name = 'activity_factories') роли = models.ManyToManyField (Роль, пустой = True, related_name = 'activity_factories') = исследование models.ForeignKey (исследование, on_delete = models.CASCADE, related_name =» activity_factories ") trend_curve = models.ForeignKey (TrendCurve, on_delete = models.CASCADE, related_name =" activity_factories ") пробкового = AutoSlugField (populate_from = 'исследование', db_index = True, уникальный = True, нуль = True) класс Meta: verbose_name_plural = «Деятельность фабрики»
Bhavesh
1

голосов
2

ответ
24

Просмотры

Многие-To-Many выбрать только те строки, с точно теми же тегами

У меня есть 3 таблицы: метки, продукты и соотношение между ними таблицы. Соотношение таблица выглядит, например, так: TagID | PRODUCTID 1 | 1 2 | 1 2 | 9 Пользователь может выбрать два варианта «Все эти» или «Один из них». Таким образом, если пользователь выбирает все из них, это означает, что продукт должен иметь точно все теги, которые выбрал пользователь. Таким образом, если пользователь выбрать тег с идентификатором 1 и 2, он должен выбрать только продукт с идентификатором 1, потому что этот продукт имеет ровно те же тег пользователь выбрал. (Другой способ, если пользователь выбирает тег с идентификатором 2, он должен выбрать только продукт с идентификатором 9.) Таким образом, продукт должен иметь все теги, которые выбрал пользователь (не больше, не меньше). SQL, что у меня уже есть для любой / Один из них: SELECT DISTINCT FROM s.SKU SKUToEAN в ы LEFT JOIN в р Детали изделия О s.ProductDetailID = р. ID РЕГИСТРИРУЙТЕСЬ ProductTagRelation, как PTR ON (ptr.productId = p.id и ptr.tagId IN (Идентификаторы выбранных тегов)) Пример поведения: TagID = 1 следует выбрать => Ни один TagID = 2 она должна выбрать => 9 TagID = 1 , 2 он должен выбрать = 1,9 Таким образом, вероятно, мне нужно два запроса. Один для любого / один из них (у меня уже есть этот), а второй для всех из них. С PHP я решить, какой запрос использовать.
Frederik Fako
1

голосов
1

ответ
53

Просмотры

JSF selectCheckboxMenu & спящий режим @ManyToMany удалить значение

Прежде всего, некоторые детали фон используемое программное обеспечение: Я работаю с primefaces 6.2.11 на Wildfly 14.0.1Final с JSF 2.3. Problemdescription: У меня есть два объекта, связанные с many2many (User & Group), и я хочу, чтобы удалить связь на стороне, которая не является владельцем (предприятие с mappedBy). Я не могу изменить владелец сторону, так как это унаследованный код. Я знаю, что я должен удалить связь на обоих концах, но мой код не работает. Добавление значений в список не является проблемой, но удаление их не представляется возможным. Я попробовал это несколько дней назад с Wildfly 10, и это было в порядке, но не с новым. Одна проблема в том, что список primefaces никак не уведомит меня через АЯКС случае, когда элемент будет удален. Если это было бы так, я мог бы справиться удалить из моего списка групп и список пользователей в группе. Потому что я не есть событие, как я пытался справиться с этим в моей службе, которая пытается спасти пользователя. У меня есть две сущности: @Entity @Table (имя = "USER") класса User общественности реализует Serializable {частный статический окончательный длинный serialVersionUID = -1699265057144017750L; @Column (имя = "ID", обнуляемый = ложь) @Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частное Integer идентификатор; @Column (имя = "USER_NAME", длина = 45, уникальный = истина) @Basic @NotNull частная строка имя_пользователя; @ManyToMany (скачивает = FetchType.LAZY, targetEntity = Group.class, mappedBy = "USERLIST") @OrderBy ( "GROUPNAME") Set личных списка группы; // геттер сеттер ...} @Entity @Table (имя = "GROUP" ) Класс пользователь общественности реализует Serializable {частных статический окончательный длинный serialVersionUID = -3403518747362744630L; @Column (имя = "ID", обнуляемый = ложь) @Id @GeneratedValue (стратегия = GenerationType.IDENTITY) частное Integer идентификатор; @ManyToMany (выборка = FetchType.LAZY, targetEntity = User.class, каскадное = {CascadeType.MERGE, CascadeType.PERSIST}) @JoinTable (имя = "user_group", joinColumns = {@JoinColumn (имя = "GROUP_ID", referencedColumnName = "ID")}, inverseJoinColumns = {@JoinColumn (имя = "USER_ID", referencedColumnName = "ID")}) @OrderBy ( "имя_пользователя") частное Набор UserList; // геттер сеттер ...} Я создал форму для редактирования пользователей. Эта форма имеет много входов и один для добавления и удаления групп от пользователя. Это Simpel primefaces selectCheckboxMenu. Это сеточки пользователю выбрать новые группы и удалять старые группы. Значение (з) / непосредственно извлекаются из объекта пользователя и значения, которые могут быть выбраны, обслуживается отдельной службой. Преобразователь: @FacesConverter (значение = "groupConverter", управляемый = верно) общественный класс GroupConverter реализует конвертер {@Inject GroupService groupService; @Override общественный объект getAsObject (FacesContext контекст, UIComponent компонент, значение String) {если (== NULL значение || value.isEmpty ()) {возвращение нуль; } {Попробовать возврат groupService.getGroupWithCollections (Integer.parseInt (значение)); } Задвижка (NumberFormatException е) {бросить новый ConverterException (новый FacesMessage ( "Недопустимый группа ID"), е); }} @Override общественного Строка getAsString (FacesContext контекст, UIComponent компонент, значение объекта) группа = значение {группа (группы); если (нуль == группа) {возвращение ""; } Если (нуль = group.getId (!)) {Возвращение "" + group.getId (); } Еще {певд ConverterException (новый FacesMessage ( "Invalid Group ID")); }}} Когда используются хиты кнопки Я звоню следующие услуги: @Transactional (Transactional.TxType.REQUIRED) общественное persistWithDeps пользователей (user2Save пользователя) {User User = USER = baseEm.contains (user2Save)? user2Save: baseEm.merge (user2Save); // Проверяем, есть новый объект (случай, когда: baseEm.merge (user2Save)) (! = Пользователь user2Save), если {если (NULL = пользователь!. getGroupList ()) {// удалить группы, если containsAll (user.getGroupList ())) {// удалить группы из пользовательского итератора итератора = user.getGroupList () итератора () (user2Save.getGroupList (!)..; в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } . GetGroupList () containsAll (user.getGroupList ())) {// удалить группы из пользовательского итератора итератора = user.getGroupList () итератора (). в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } . GetGroupList () containsAll (user.getGroupList ())) {// удалить группы из пользовательского итератора итератора = user.getGroupList () итератора (). в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } getGroupList ())) {// удалить группы из пользовательского итератора итератора = user.getGroupList () итератора (). в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } getGroupList ())) {// удалить группы из пользовательского итератора итератора = user.getGroupList () итератора (). в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } в то время как (iterator.hasNext ()) {группа группа = iterator.next (); . Если (!. User2Save.getGroupList () содержит (группа)) {group.getuser2SaveList () удалить (пользователь); Iterator.remove (); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } Удалить(); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; } Удалить(); }}} // Добавление групп пользователя user.getGroupList () Foreach (группа -> {если (group.getUserList () содержит (пользователь)) {group.getUserList () добавить (пользователь);!..}}). ; }} BaseEm.persist (пользователь); возвращать пользователя; }
Sebastian S.
1

голосов
0

ответ
55

Просмотры

DELETE statement on table 'subs' expected to delete 1 row(s); Only 2 were matched

Я использую колбовую SQLAlchemy с многие ко многим. И я стараюсь, чтобы удалить текущий пользователь от пользователей, но я получаю только собственную ошибку, как показан в теме. Что я делаю неправильно, я не мог понять. Заранее спасибо за помощь Мои модели ниже: Subs = db.Table ( 'подлодки', db.Column ( 'user_id', db.Integer, db.ForeignKey ( 'user.id')), db.Column ( 'REQUEST_ID », db.Integer, db.ForeignKey ( 'request.id'))) класс пользователя (UserMixin, db.Model): идентификатор = db.Column (db.Integer, primary_key = True) имя = db.Column (дб. Строка (120)) роль = db.Column (db.String (120)) password_hash = db.Column (db.String (120)) = запросы db.relationship ( 'Запрос', вторичные = подводные лодки, backref = db.backref (ленивый = 'динамический' 'пользователей')) класс Request (db.Model): идентификатор = дб.
J_log
1

голосов
0

ответ
23

Просмотры

Проблемы с @ManyToMany аннотаций Hibernate - Внешний ключ имеет неправильный номер столбца (должно быть 3)

Я хочу, чтобы добавить следующую базу данных-структуру моего JPA: CREATE TABLE USER (ID INT PRIMARY KEY AUTO_INCREMENT, ПгвЬЫате VARCHAR (255), LastName VARCHAR (255)); CREATE TABLE проекта (PNUM VARCHAR (255) ПЕРВИЧНЫЙ КЛЮЧ, PNAME VARCHAR (255) NOT NULL); CREATE TABLE РОЛИ (ID INT PRIMARY KEY AUTO_INCREMENT, описание VARCHAR (255) NOT NULL); CREATE TABLE присваивания (user_id INT, project_num VARCHAR (255), ROLE_ID Int, внешний ключ (идентификатор_пользователь) СПРАВОЧНЫЙ USER (ID), FOREIGN KEY (project_num) Ссылка проект (PNUM), внешний ключ (ROLE_ID) СПИСОК ЛИТЕРАТУРА Роль (ID), ПЕРВИЧНЫЙ КЛЮЧ (идентификатор_пользователь, project_num, ROLE_ID)); Так я начал делать в три Сущности пользователя, проект и роли (см конца этого поста для полных классов). Затем я создал Assignment-класс для подключения включая @EmbeddedId: Класс распайки: пакет com.demo.example.entity; импорт javax.persistence.EmbeddedId; импорт javax.persistence.Entity; @Entity общественного класса Назначение {@EmbeddedId частное AssignmentId идентификатор; Назначение публичного () {// TODO Авто-конструктор генерируется окурок} общественного AssignmentId GetId () {вернуть this.id; } Общественного недействительными SETID (AssignmentId ID) {this.id = ID; }} Пакет com.demo.example.entity AssignmentId класса; импорт java.io.Serializable; импорт javax.persistence.Embeddable; @Embeddable общественного класса AssignmentId реализует Serializable {личного роль Role; частный проект проекта; частный пользователь User; общественный AssignmentId (проект проекта, роль Роль, пользователь Пользователя) {this.project = проект; this.role = роль; this.user = пользователь; } Общественного getProject Project () {возвращение проекта; } Общественного недействительный setProject (Проект) {this.project = проект; } Общественная роль getRole () {возвращение роли; } Недействительная setRole (Роль Роль) общественная {this.role = роль; } Польз GetUser () {возвращение пользователя; } Общественной недействительная SETUSER (пользователь Пользователя) {this.user = пользователь; }} Наконец, я объявил репозиторий для присвоения: пакет com.demo.example.repository; импорт org.springframework.data.jpa.repository.JpaRepository; импорт org.springframework.stereotype.Repository; импорт com.demo.example.entity.Assignment; импорт com.demo.example.entity.AssignmentId; @Repository общедоступный интерфейс AssignmentRepository расширяет JpaRepository {} Теперь при запуске JUnit-теста я бегу в следующее сообщение об ошибке: Вызванный: org.hibernate.AnnotationException: Иностранный ключ Отсносящийся com.demo.example.entity.Assignment из com.demo.example.entity.User имеет неправильный номер столбца. должно быть 3 Я видел довольно много предложений о том, что делать, но ни один из них не работал (а также большую часть времени «должно быть» -значение равно 2. Это даже работает с 3?). Но я не могу понять, почему мой User-Entity имеет неверное число столбцов? Это предусмотрено три в @ JoinTable-Annotation (один присоединиться и два inverseJoin-Columns). Что я сделал не так? Классы: User.java: пакет com.demo.example.entity; импорт java.util.HashSet; импорт java.util.Set; импорт javax.persistence.CascadeType; импорт javax.persistence.Column; импорт javax.persistence.Entity; импорт javax.persistence.GeneratedValue; импорт javax.persistence.GenerationType; импорт javax.persistence.Id; импорт javax. persistence.JoinColumn; импорт javax.persistence.JoinTable; импорт javax.persistence.ManyToMany; импорт javax.persistence.Table; @Entity @Table (имя = "USER") общественного класса пользователя {@Id @GeneratedValue (стратегия = GenerationType.IDENTITY) @column (имя = "user_id") частное ИНТ user_id; @Column (имя = "Имя") частная строка Firstname; @Column (имя = «фамилия») частная строка фамилия; @ManyToMany (каскад = {CascadeType.ALL}) @JoinTable (имя = "ПЕРЕДАЧА", joinColumns = {@JoinColumn (имя = "идентификатор_пользователя")}, inverseJoinColumns = {@JoinColumn (имя = "pnum"), @JoinColumn ( Name = "ROLE_ID")}) частное Установить назначение = новый HashSet (); общественный Set getAssignments () {вернуть это. назначения; } Public User () {} Public User (String, String FirstName LastName) {this.firstname = Firstname; this.lastname = Lastname; } Общественного недействительными SETID (интермедиат ID) {this.user_id = ID; } Общественного недействительными setFirstname (Строка Firstname) {this.firstname = Firstname; } Общественного недействительными setLastname (Строка Lastname) {this.lastname = Lastname; } Общественного ИНТ GetId () {вернуться user_id; } Строка общественного getFirstname () {возвращение Firstname; } Строка общественного getLastname () {возвращение Lastname; }} Project.java: пакет com.demo.example.entity; импорт java.util.HashSet; импорт java.util.Set; импорт javax.persistence.CascadeType; импорт javax.persistence.Column; импорт javax.persistence.Entity; импорт javax.persistence.Id; импорт javax. persistence.JoinColumn; импорт javax.persistence.JoinTable; импорт javax.persistence.ManyToMany; импорт javax.persistence.Table; @Entity @Table (имя = "ПРОЕКТ") общественного класса Project {@Id @column (имя = "PNUM") частная строка pnum; @Column (имя = "PNAME", обнуляемая = ложь) частная строка PNAME; @ManyToMany (каскад = {CascadeType.ALL}) @JoinTable (имя = "ПЕРЕДАЧА", joinColumns = {@JoinColumn (имя = "pnum")}, inverseJoinColumns = {@JoinColumn (имя = "идентификатор_пользователя"), @JoinColumn ( Name = "ROLE_ID")}) частное Установить назначение = новый HashSet (); общественного Set getAssignments () {возвращение this.assignments; } Общественного проект () {// TODO Auto-порожденный конструктор окурок} общественного проект (String PNUM, String PNAME) {this.pnum = PNUM; this.pname = PNAME; } Строка getPnum общественности () {возвращение pnum; } Общественного недействительными setPnum (Строка pnum) {this.pnum = pnum; } Строка getPname общественности () {возвращение PNAME; } Общественного недействительными setPname (Строка PNAME) {this.pname = PNAME; }} Role.java: пакет com.demo.example.entity; импорт java.util.HashSet; импорт java.util.Set; импорт javax.persistence.CascadeType; импорт javax.persistence.Column; импорт javax.persistence.Entity; импорт javax.persistence.GeneratedValue; импорт javax.persistence.GenerationType; импорт javax.persistence.Id; импорт javax.persistence.JoinColumn; импорт javax.persistence.JoinTable; импорт javax. persistence.ManyToMany; импорт javax.persistence.Table; @Entity @Table (имя = "Роль") общественный класс Роль {@Id @GeneratedValue (стратегия = GenerationType.IDENTITY) @column (имя = "role_id") частное ИНТ role_id; @Column (имя = "NAME", обнуляемое = ложь) частное имя строки; @ManyToMany (каскад = {CascadeType.ALL}) @JoinTable (имя = "ПЕРЕДАЧА", joinColumns = {@JoinColumn (имя = "ROLE_ID")}, inverseJoinColumns = {@JoinColumn (имя = "идентификатор_пользователя"), @JoinColumn ( Name = "pROJECT_ID")}) частное Установить назначение = новый HashSet (); общественного Set getAssignments () {возвращение this.assignments; } Общественной роли (имя String) {this.name = имя; } Общественного ИНТ GetId () {вернуть это. role_id; } Строка общественного GetName () {вернуться this.name; } Общественной недействительная SetName (имя String) {this.name = имя; }}
Rüdiger
1

голосов
1

ответ
27

Просмотры

Многие ко многим отношений Django модели с дополнительными атрибутами

Я новичок в разработке Django (и программировании MVC в целом!) рассматривают следующий пример того, как я мог перевести эти примитивы на модель? USER (идентификатор, имя, фамилия) ENGLISH_CERTIFICATION (идентификатор, код, название) USER_CERTIFICATION (идентификатор, id_user, id_english_certification, дата) Класс пользователя (models.Model): Имя = models.CharField (max_length = 64) фамилия = models.CharField ( max_length = 64) ??? Класс EnglishCertification (models.Model): код = models.CharField (max_length = 2) Название = models.CharField (max_length = 64) ??? Где я поставил отношения и поле «дата»? Спасибо!
Andrea
1

голосов
0

ответ
40

Просмотры

Laravel 5 polymorphic many-to-many relations where there are multiple such relationships in one model

Simplify database with polymorphic many to many relations where there are multiple such relations in the same model. For example, the user model might have polymorphic relations to user_types, user_roles, user_statuses tables. Each of these tables might well have the same structure, but in the conventional many-to-many relationships with pivot tables, it would require seven tables to incorporate types, roles, and statuses. With a complex database, such as the one I'm working on, that issue rapidly expands into hundreds of tables. Since many people have difficulties understanding this issue, I've included a crude very simplified diagram below. In it you'll see that all four models on the right side have identical structures. To me, this seems totally needless, not to mention the repetition of pivot tables. I'm new to Laravel so I may be missing the obvious. In everything that I've been able to find about Laravel polymorphic many to many relatons deals with only single such relations in any given model. The most common example given is the taggable situation. In this case, models such as Post, Article, and Review might each have one and only one relationship to the taggable model although they might each have multiple tags. I think I fully understand this, and it does not fit the situation I'm talking about. What I'm talking about is the case where the Software model might have a polymorphic many to many relation to the Rubrics model for developmental stages (alpha, beta, release candidate, etc.) and for software types (text editor, messaging, database management, etc.). In this case, the Rubrics model would have to capture the "type" of relationship (software developmental stage vs. software type) in addition to model. It seems like that this is a common enough issue that there must be some way to do this. I'm hoping that someone will be able to provide a solution that simplifies the normal many-to-many relationship with a table for every single aspect — even though all such tables will likely have identical structures — along with the pivot/junction table for each such table.
LarryTX
1

голосов
1

ответ
15

Просмотры

Could I get some input on my personal MySQL project? Specifically with Many to Many relationships

Я недавно закончил университет и хочу сохранить на вершине моих навыков данных, ориентированные. Я делаю это, создав свою собственную базу данных на моем локальном ноутбук с помощью MySQL Workbench. Цель моей базы данных, чтобы записать то, что книги, которые я читал с конца 2018. Я начал с нуля с помощью ERD разработать свою базу данных концептуально и понять, как их отношения работы между различными субъектами. У меня есть несколько многие ко многим отношений, определенных что приводит к моему первому главному вопросу ли многие ко многим отношений я разработал логична и имеет смысл? (Я включил ссылку на мой ERD, чтобы помочь вам, ребята, визуализировать мой DB) Как я вижу это, когда речь заходит о разработке многих многих отношениях, как это: Много разных книг может иметь много разных жанра, связанные с ними. Отсюда возникает необходимость сделать отношения многие ко многим между столом книги и таблицы Жанр. Много разных книги можно прочитать много различных читателей и многие читатели могут читать много разных книг Отсюда необходимость сделать многие ко многим отношений между книгой и Reader. Мой ERD Я уверен, что эти отношения имеют смысл логически, но второе мнение всегда полезно. Второй главный вопрос заключается в следующем: (Предполагая, что многие многие отношения являются правильными) Как я могу сделать JOIN, который позволит мне визуализировать этот жанр ассоциируется с книг по моей базе данных и другой РЕГИСТРИРУЙТЕСЬ визуализировать, которые читатели читали, какие книги? Я привык к использованию JOINS в основных отношениях таблицы, но я не с опытом работы со многими многих составных ключевых таблиц при проектировании соединений.
Jack Rogers
1

голосов
1

ответ
36

Просмотры

вставки Many2Many поля в запросе Odoo не работает в Android

Я пытаюсь создать встречу с участниками в Odoo, Поля Присутствующих являются many2many поля. если я не добавить его к запросу, встреча создается просто отлично без посетителей. Однако, если добавить ключ «partner_ids», что соответствует many2many поле. Встреча не появляется. Вот образцы того, что я пробовал: // Попытка 1: добавить их как целочисленный массив Список partnerIds = новый ArrayList (); partnerIds.add (15403); partnerIds.add (7567); partnerIds.add (7564); // Попытка 2: добавить их в массив HashMap; Список hashMapList = новый ArrayList (); HashMap HashMap = новый HashMap (); hashMap.put ( "Идентификатор", 15401); HashMap hashMap2 = новый HashMap (); hashMap2.put ( "Идентификатор", 15400); HashMap hashMap3 = новый HashMap (); hashMap3.put ( "Идентификатор", 15399); hashMapList.add (HashMap); hashMapList.add (hashMap2); hashMapList.add (hashMap3); попытка 3: добавить их в список объектов, как уже упоминалось здесь Список testObj = новый ArrayList (); // Объект OBJ = новый Object (); testObj.add (0); testObj.add (0); testObj.add (hashMapList); Список manyToManyRecord = новый ArrayList (); manyToManyRecord.add (testObj); Log.d ( "manyToManyRecord", manyToManyRecord.toString ()); OdooValues ​​значение = новые OdooValues ​​(); values.put ( "opportunity_id", 25619); values.put ( "partner_ids", manyToManyRecord); values.put ( "имя", "App Обсуждение Встреча"); values.put ( "старт", "2019-03-27 10:00:00"); values.put ( "стоп", " ставить ( "день", 0); values.put ( "идентификатор_пользователя", 1); values.put ( "активный", правда); values.put ( "recurrent_id", 0); values.put ( "x_project_latitude", 0); values.put ( "x_project_longitude", 0); values.put ( "Описание", "Встреча Описание теста"); client.create ( "calendar.event", ценности, новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String. valueOf (идентификатор_сервер));}}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится! ставить ( "день", 0); values.put ( "идентификатор_пользователя", 1); values.put ( "активный", правда); values.put ( "recurrent_id", 0); values.put ( "x_project_latitude", 0); values.put ( "x_project_longitude", 0); values.put ( "Описание", "Встреча Описание теста"); client.create ( "calendar.event", ценности, новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String. valueOf (идентификатор_сервер));}}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится! values.put ( "x_project_latitude", 0); values.put ( "x_project_longitude", 0); values.put ( "Описание", "Встреча Описание теста"); client.create ( "calendar.event", ценности, новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String. valueOf (идентификатор_сервер));}}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится! values.put ( "x_project_latitude", 0); values.put ( "x_project_longitude", 0); values.put ( "Описание", "Встреча Описание теста"); client.create ( "calendar.event", ценности, новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String. valueOf (идентификатор_сервер));}}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится! новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String.valueOf (идентификатор_сервер)); }}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится! новый IOdooResponse () {@Override общественный недействительный onResult (OdooResult результат) {INT идентификатор_сервер = result.getInt ( "результат"); Log.d ( "Встреча Id", String.valueOf (идентификатор_сервер)); }}); Так где же ошибка, которую я делаю? Любая помощь с шагами ценится!
Ahmad
1

голосов
1

ответ
11

Просмотры

Джанго промежуточная таблица с много-ко-многим поле вместо внешнего ключа?

У меня есть 2 модели в моем приложении: Tower Пользователь Моя цель состоит в том, чтобы связать множество башен с пользователем, используя промежуточную таблицу, потому что мне нужно добавить определенный период времени. Так что у меня есть что-то подобное в моей модели: класс Tower (models.Model): Имя = models.CharField (max_length = 128) Класс пользователя (models.Model): Имя = models.CharField (max_length = 128) членов = модели. ManyToManyField ( 'Башня', через 'Дату' =) класс Дата (models.Model): пользователь = models.ForeignKey ( 'User', on_delete = models.CASCADE) башенная = models.ForeignKey ( 'Башня', on_delete = модель. CASCADE) BEGIN_DATE = models.DateTimeField () end_date = models.DateTimeField () Но моя цель состояла в том, чтобы иметь башню поля в классе дат на многие-ко-многим, как это: башня = models.ManyToManyField ( «башня», пустой = True) Так что я могу связать множество башен к пользователю в определенный период. Но, к сожалению, Джанго говорит, что мне нужно использовать forgeignkey для башни и классов пользователей. Есть какое-либо решение для этого? Для того, чтобы обратиться непосредственно многие-ко-многим поле в промежуточной таблице? Или я должен создать новый класс, своего рода GroupTower, которые имеют многие-ко-многим поле в классе Tower? Что-то вроде этого: класс Tower (models.Model): Имя = models.CharField (max_length = 128) класс GroupTower (models.Model): башня = models.ManyToManyField ( 'Башня', пустой = True) Класс пользователя (models.Model ): имя = models.CharField (max_length = 128) члены = models.ManyToManyField ( 'Башня', через 'Дату' =) класс Дата (models.Model): пользователь = models.ForeignKey ( 'User', on_delete = модель. CASCADE) башни = models.ForeignKey ( 'GroupTower',
Pedro Faria
1

голосов
1

ответ
497

Просмотры

Сохранение данных из MultiSelectList в Edit и Create Просмотров

У меня есть 3 таблицы: Компании, субподряды и CompanyToSubcontract CompanyToSubcontract таблица является справ Общества и Guid из Субдоговора. У меня есть MultiSelectList на субподряд редактировать и создавать вид на котором пользователь может выбрать несколько компаний. Я, наконец, получил это работает, где он отображает правильные компании, как выбранные в окне Subcontract Edit. У меня нет проблемы с сохранением данных. В создании зрения, субподряд не имеет Guid, пока он не записывается в базу данных Sql, так как я могу получить справы, чтобы сохранить в таблицу CompanyToSubcontract? Кроме того, в режиме редактирования, я делаю что-то неправильно. Это не save.the выбор компании. Мне также нужно удалять записи для компаний, которые не установлены. Каков наилучший способ идти о том, что делать? Я последовал за NerdDinner учебника, чтобы получить мою основную структуру, и теперь я пытаюсь обновить, чтобы выполнить свои потребности. Любой, кто может мне точку в правильном направлении? В SubcontractRepository: общественное ничтожной Сохранить () {db.SubmitChanges (); } В контроллере: [AcceptVerbs (HttpVerbs.Post), авторизовать] общественное ActionResult Редактировать (строка ID, FormCollection formValues) {// Получить существующий субподряд субподряд субподряд = subcontractRepository.GetSubcontract (ID); если (субподряд == NULL) возвращение View ( "NotFound"); еще {{попробуйте UpdateModel (субподряд); IEnumerable selectedCompanies = Request.Form [ "Компании"]. Split (новый Char [] { ''}). Выберите (idStr => Новый Guid (idStr)); Еогеасп (вар элемент в selectedCompanies) {CompanyToSubcontract CS = новый CompanyToSubcontract (); cs.subcontract_id = subcontract.subcontract_id; cs.company_id = элемент; subcontractRepository.Save (); } Subcontract.lastupdate_date = DateTime.Now; subcontract.lastupdatedby_user = User.Identity.Name; // Упорство изменения обратно в базу данных subcontractRepository.Save (); // Выполнение HTTP перенаправления на страницу сведений для сохраненного возврата субподряд RedirectToAction ( «Подробности», новый {идентификатор = subcontract.subcontract_no}); } {Улов ModelState. AddRuleViolations (subcontract.GetRuleViolations ()); вернуться View (новый SubcontractFormViewModel (субподряда)); }}}
RememberME
1

голосов
3

ответ
1.7k

Просмотры

Сами ссылки симметричны гибернации Карта таблицы с использованием @ManyToMany

У меня есть следующий класс открытый класс ElementBean {частная ссылка строки; частные Установка соединения; } Мне нужно создать таблицу, где элементы карты отображаются друг с другом в многие-ко-многим симметричных отношений. @ManyToMany (targetEntity = ElementBean.class) @JoinTable (Name = "element_elements", joinColumns = @ JoinColumn (имя = "FROM_ELEMENT_ID", обнуляемый = ложь), inverseJoinColumns = @ JoinColumn (имя = "TO_ELEMENT_ID", обнуляемый = ложь)) общественного Set getConnections () {возвращение соединений; } У меня есть следующие требования Когда элемент А добавляется в качестве соединения к элементу B, то элемент В должно стать соединение элемента А. Таким образом, A.getConnections () должен возвращать B и B.getConnections () должен возвращать A. Я не хотите явно создать 2 записи один для отображения а к в, а другой для B к A. Это возможно? UPDATE: Спасибо за все предложения. Когда я пытаюсь @ предложение два записей Паскаля создаются следующим образом, когда я пытаюсь соединить элемент 1 с элементом 2. FROM_ELEMENT_ID, TO_ELEMENT_ID 1, 2 2, 1 Я хочу, чтобы записи, которые должны быть симметричными, где 1,2 такими же, как 2,1 Как этот вопрос рассматривается? Обновление Я явно создал класс карты боб ConnectionBean {ElementBean из; ElementBean к; } @NotNull @ManyToOne @JoinColumn (имя = "FROM_ELEMENT_ID", обнуляемое = ложь) публичное ElementBean GETFROM () {возвращение из; } @NotNull @ManyToOne @JoinColumn (имя = "TO_ELEMENT_ID", обнуляемая = ложь) публичное ElementBean Getto () {вернуться; } Я обновил ElementBean для общественного класса ElementBean {частной ссылки String; частный набор из; частный набор для; } @OneToMany (mappedBy = "от", выборки = FetchType.LAZY) общественный Set GETFROM () {возвращение из; } @OneToMany (mappedBy = "до", выборки = FetchType.LAZY) публичный набор Getto () {возвращение к; } Здесь я могу контролировать вставки и удаления. Так, например, прежде чем вставить новый ConnectionBean, проверить, существует ли связь между элементами А & B путем проверки таблицы соединений для записей, где ((от A == && к == B) || (от == B && до == А)) перед введением.
smahesh
1

голосов
1

ответ
559

Просмотры

поле SET индексирование

У меня есть две сущности А и В. Они связаны с многие ко многим отношений. Субъект А может быть связано до 100 В сущностями. Компания Б может быть связано до 10000 субъектов A. Мне нужно быстрый способ, чтобы выбрать, например, 30 субъектов А, которые имеют отношения с указанными лицами B, процеживают и отсортированных по различным признакам. Вот как я вижу идеальное решения: Я положил всю информацию я знаю о лицах, в то числе их отношений с B субъектами в единый ряд (специальную таблицу с полем SET), затем добавить все необходимые индексы. Проблема заключается в том, что вы не можете использовать индекс при запросе на поле SET. Что я должен делать? Я могу заменить базу данных что-то другое, если это поможет. UPDATE: Я сожалею. Похоже, я забыл упомянуть одну важную деталь. Мне нужно, чтобы найти те элементы A, которые имеют отношения с входом B с ID = 1 и с вхождением B с идентификатором = 2 в то же время. Так что, если с помощью объединений я буду иметь что-то подобное: SELECT A.id, COUNT (*), как УНТ в INNER JOIN А.Б. a.id = ab.a_id WHERE ab.b_id В (1,2) GROUP BY а. идентификатор ORDER BY NULL, имеющего CNT = 2, который дает мне очень плохо Perfomance
Dienow
1

голосов
1

ответ
340

Просмотры

найти отношения в многие-ко-многим структуры с SQL

мой вопрос находится рядом с проблемой родитель-ребенок, и, возможно, потребуется некоторое рекурсивный запрос, но я не нашел никаких ответов от просмотра форумов. вот моя проблема: У меня есть 3 таблицы: T1 (люди) T2 (места) T3 (отношения betwenn A и B) ------- ------ -------- id1 (рк) id2 (рк) id3 (рк) название города id_A id_B Я хотел бы определить группы людей и мест, которые связаны между собой. Например, если Джон посетил Лондон и Париж, Мэри посещает Париж и Нью-Йорк, Питер посещает Бангалор и Токио, я хотел бы, чтобы повлиять на один и тот же код группы к Мэри, Джону, Парижу, Лондону и Нью-Йорку, а другая группа коды в Питер Токио и Бангалор. Я действительно не знаю, как сделать это с помощью SQL. Любая идея? Спасибо
thoomasbro
1

голосов
1

ответ
302

Просмотры

Управление многие ко многим отношений в asp.net мастера контроля

Скажем, у меня есть эта сущность с большим количеством атрибутов. В форме ввода я решил реализовать контроль мастера, так что я могу собирать информацию об этой организации в нескольких этапах. Проблема заключается в том, что мне нужно собрать информацию, которая была смоделирована имеет много многих отношения. Я планирую использовать Telerik GridView, чтобы управлять этим (добавлять / редактировать / удалять), проблема в том, где я могу хранить эти данные с момента организации в виде вставки не создается на базе еще. ОК, так что я могу хранить всю эту информацию во временных списках проживающих в ViewState, ожидая окончательный представить, где я сваливаю все, что в БДЕ, но один из шагов, я собираю файлы ... теперь хранение файлов в ViewState находится вне вопроса, так же как, как хранить их в сессии ... Я думал о реализации таким образом, что пользователь должен предоставить некоторую информацию первой (скажем, первые 3 шага), совершают данные в базу данных, создавая родительский объект, а затем начать вставлять все Чайлдсы объектов ... но это будет получить странно, как это сбивает с толку, так как на первых шагов, которые вы не сохранять данные в БД и на следующих из них вы прямо ... совершали Каждый имеет какие-либо мысли по этому поводу? Спасибо
Luis
1

голосов
1

ответ
958

Просмотры

Entity Framework 4 и службы WCF Data: N: M отображение

У меня есть три таблицы в моей базе данных: Аналого таблицу, таблицу B, и многие-ко-многим таблицы ABMapping. Для простоты, А и В имеют ключи с колоннами идентичности; ABMapping имеет всего две колонки: AID и BID. Я построил 4 модели Entity Framework от этого, и это было правильно определить N: M отображение между А и В. Затем я построил службу данных WCF на основе этой модели EF. Я пытаюсь потреблять это службы WCF Data. К сожалению, я не могу понять, как получить отображение между As и Bs на карту обратно в базу данных. Я пытался что-то вроде этого: А а = новый A (); B B = новый B (); a.Bs.Add (б); connection.SaveChanges (); Но это, кажется, не работали. Любые подсказки? Что мне не хватает?
JJO
1

голосов
2

ответ
804

Просмотры

Доктрина добавив много-ко-многим соотношения для переходных записей

две модели сайта и языка разделяют многие-ко-многим (они являются двунаправленными) Как добавить отношения между ними? В идеале я хочу сделать это: (добавить существующий язык на новый сайт) $ сайта = новый сайт (); $ Сайт-> имя = "Google" $ сайт-> URL = "www.google.com"; ---- Код для добавления языка ---- $ сайт-> Save (); Или я должен только добавить язык после вызова сохранения (), и если да, то как это делается? заранее спасибо
rahul
1

голосов
2

ответ
394

Просмотры

NHibernate многие ко многим вопрос отношений: можно выбрать, не может обновить

Каждый пользователь имеет список ролей: Я отслеживать все запросы к серверу SQL. Когда я выбираю пользователя, я также вижу заявление SQL SELECT (который Ok). Проблема заключается в том, когда я пытаюсь обновить существующий пользователь (то есть роли): Я вижу только обновление таблицы пользователя, но не USER_ROLE (что плохо). Для уточнения:..? Я не ожидаю, вставки / обновления в таблице ролей (но в USER_ROLE, поскольку эти роли «постоянные» и могут быть присоединены и свободно отдельностоящий Почему выбрать работает правильно, но не обновлять пожалуйста Если больше информации необходимо - просто спросите - я постараюсь ответить на все вторичные вопросы обновления: отображение ролей: Update N2: это как таблицы определяются: Роль таблицы: CREATE TABLE [Роли] ([Id] INTEGER NOT NULL PRIMARY KEY,. [Имя] текст NOT NULL, [последнее изменение] INT NOT NULL DEFAULT (0)); CREATE UNIQUE INDEX uidxUserName ролей (имя КОПИИ NoCase); Таблица пользователя: CREATE TABLE [Пользователи] (текст [Id] INTEGER NOT NULL PRIMARY KEY, [Имя] NOT NULL, [последнее изменение] INT NOT NULL DEFAULT (0)); CREATE UNIQUE INDEX uidxRoleName на пользователь (имя КОПИИ NoCase); USER_ROLE relatioin таблица (внешние ключи): CREATE TABLE [USER_ROLE] ([UserId] INTEGER NOT NULL, [Идентификатор роль] INTEGER NOT NULL, [последнее изменение] INT NOT NULL DEFAULT (0), PRIMARY KEY (UserId, Идентификатор роль), FOREIGN KEY ( USERID) Литы Пользователи (Id), FOREIGN KEY (Идентификатор роль) ЛИТЕРАТУРА Роль (Id)); CREATE UNIQUE INDEX uidxRoleName на пользователь (имя КОПИИ NoCase); USER_ROLE relatioin таблица (внешние ключи): CREATE TABLE [USER_ROLE] ([UserId] INTEGER NOT NULL, [Идентификатор роль] INTEGER NOT NULL, [последнее изменение] INT NOT NULL DEFAULT (0), PRIMARY KEY (UserId, Идентификатор роль), FOREIGN KEY ( USERID) Литы Пользователи (Id), FOREIGN KEY (Идентификатор роль) ЛИТЕРАТУРА Роль (Id)); CREATE UNIQUE INDEX uidxRoleName на пользователь (имя КОПИИ NoCase); USER_ROLE relatioin таблица (внешние ключи): CREATE TABLE [USER_ROLE] ([UserId] INTEGER NOT NULL, [Идентификатор роль] INTEGER NOT NULL, [последнее изменение] INT NOT NULL DEFAULT (0), PRIMARY KEY (UserId, Идентификатор роль), FOREIGN KEY ( USERID) Литы Пользователи (Id), FOREIGN KEY (Идентификатор роль) ЛИТЕРАТУРА Роль (Id));
BreakPhreak
1

голосов
1

ответ
1.5k

Просмотры

Fluent NHibernate, используя AsList () возвращает нулевые объекты в зависимости от SortOrder

В проекте я работаю, мы с помощью вкладок. Эти вкладки имеют содержание. Несколько объектов контента может быть на вкладке. Таким образом, мы могли бы иметь вкладку «автомобиль», и что вкладка автомобиля может отображать объект контента седана, объект контента сув и объект контента грузовика. Пользователь может также указать, что она содержит более или менее из этих объектов и порядка их, однако они хотят. Это важно для нас, чтобы поддерживать порядок этих содержательных объектов по спецификации пользователя. Вот мои отображения: На отображение вкладки: HasManyToMany (т => t.ContentObjects) .table ( "TabContentObjects") .ParentKeyColumn ( "табетический") .ChildKeyColumn ( "ContentObjectID") .AsList (индекс => index.Column ( "Порядок сортировки")); На ContentObject отображения: HasManyToMany (с => c.Tabs) .table (» RemoveContentObject (deleteContentObject); } // в классе Tab публичной виртуальной ничтожной RemoveContentObject (TabContentObject элемент) {если (ContentObjects == NULL) ContentObjects = новый список (); ContentObjects.Remove (пункт); } Если это единственный или первый (SortOrder = 0) contentObject в закладке, можно удалить. Если это второе содержание объекта, contentObject.Tabs выглядеть [0] [нуль], [1] [Tab]. Если это четвертый contentObject на вкладке contentObject.Tabs выглядит [0] [нуль], [1] [нуль], [2] [нуль], [3] [Tab]. Так, в зависимости от того, что колонна SortOrder находится в таблице ассоциации, я, кажется, есть много пустых ссылок, возвращенных, и, следовательно, не могу удалить из-за нулевую ссылку. Я не могу понять, почему эти Нуль- возвращаются. Любая помощь будет оценена. } // в классе Tab публичной виртуальной ничтожной RemoveContentObject (TabContentObject элемент) {если (ContentObjects == NULL) ContentObjects = новый список (); ContentObjects.Remove (пункт); } Если это единственный или первый (SortOrder = 0) contentObject в закладке, можно удалить. Если это второе содержание объекта, contentObject.Tabs выглядеть [0] [нуль], [1] [Tab]. Если это четвертый contentObject на вкладке contentObject.Tabs выглядит [0] [нуль], [1] [нуль], [2] [нуль], [3] [Tab]. Так, в зависимости от того, что колонна SortOrder находится в таблице ассоциации, я, кажется, есть много пустых ссылок, возвращенных, и, следовательно, не могу удалить из-за нулевую ссылку. Я не могу понять, почему эти Нуль- возвращаются. Любая помощь будет оценена. } // в классе Tab публичной виртуальной ничтожной RemoveContentObject (TabContentObject элемент) {если (ContentObjects == NULL) ContentObjects = новый список (); ContentObjects.Remove (пункт); } Если это единственный или первый (SortOrder = 0) contentObject в закладке, можно удалить. Если это второе содержание объекта, contentObject.Tabs выглядеть [0] [нуль], [1] [Tab]. Если это четвертый contentObject на вкладке contentObject.Tabs выглядит [0] [нуль], [1] [нуль], [2] [нуль], [3] [Tab]. Так, в зависимости от того, что колонна SortOrder находится в таблице ассоциации, я, кажется, есть много пустых ссылок, возвращенных, и, следовательно, не могу удалить из-за нулевую ссылку. Я не могу понять, почему эти Нуль- возвращаются. Любая помощь будет оценена.
user404801
1

голосов
1

ответ
607

Просмотры

Еще один столбец в таблицу соединения с помощью зимуют многие-ко-многим

Как я могу отобразить структуру, подобную этой БД модели http://imagepost.ru/images/186/oefb4v6.png в классе А {Map обув; } Где ключ в обув является представление роли в a_ имеет _b? Спасибо!
Stan Kurilin
1

голосов
1

ответ
2.5k

Просмотры

Фильтр многие-ко-многим множественного выбора поля

У меня есть объект (книга) с многими ко многим отношений с другим объектом (категория). «Категория» используется для отображения подкатегорий тоже. Различию между категории и подкатегории, что категория не имеет «category_parent = Нет», в то время как подкатегория имеет категорию в качестве родителя. --models.py-- класс Категория (models.Model): Имя = models.CharField (max_length = 150, пустой = True, нуль = True) category_parent = models.ForeignKey ( "Categoria", пустой = True, нуль = True ) класс Book (models.Model): название = models.CharField ( "Title", max_length = 150) Категория = models.ManyToManyField ( "Категория", пустой = True, нуль = True) Я хотел бы, чтобы отобразить форму с два ChoiceFields как множественный выбор. Один для категорий, где только категории должны отображаться, а другой для подкатегорий предыдущей выбранной категории. Я не знаю, как фильтровать подкатегории, доступные в выбранной категории выше. Это возможно? До сих пор я только был способен фильтровать подкатегории за исключением тех, которые являются категориями (category_parent = Нет), но я не мог фильтровать по категориям, уже выбраны. --forms.py-- класс CatSubcatForm (forms.Form): категория = forms.ModelChoiceField (Category.objects.filter (category_parent = None)) подкатегорию = forms.ModelChoiceField (Category.objects.exclude (category_parent = None)) т процеживают категорией, которая уже выбрана. --forms.py-- класс CatSubcatForm (forms.Form): категория = forms.ModelChoiceField (Category.objects.filter (category_parent = None)) подкатегорию = forms.ModelChoiceField (Category.objects.exclude (category_parent = None)) т процеживают категорией, которая уже выбрана. --forms.py-- класс CatSubcatForm (forms.Form): категория = forms.ModelChoiceField (Category.objects.filter (category_parent = None)) подкатегорию = forms.ModelChoiceField (Category.objects.exclude (category_parent = None))
user553417
1

голосов
1

ответ
768

Просмотры

Django many-to-many query

Привет У меня есть следующие модели: класс участия (models.Model): workflow_activity = models.ForeignKey ( 'WorkflowActivity') пользователь = models.ForeignKey (Пользователь) Роль = models.ForeignKey (Role) ток = models.BooleanField () Это многие-ко-многим «через» стол. Я хочу, чтобы фильтровать экземпляры workflow_activity, которые имеют либо одно из следующих условий: Нет пользователей назначены, то есть, нет записей для этого workflow_activity в таблице участия Нет текущих активных пользователей, то есть, где все строки для workflow_activity в таблице участия имеют ток = = False Помощь при построении запроса будет высоко ценится! EDIT: Привет всем, спасибо за ответы. Я предполагаю, что им, вероятно, приближается к этому вещи неправильно. Мое требование заключается в том, что им построение своего рода система продажи билетов, которая имеет функцию автоматические присвойте которая присваивает пользователь билетов на основе некоторой логики выбора. Im запустив присвойте функцию периодической задачи (с использованием сельдерея), но для этого мне нужно выбрать билеты, которые в настоящее время Unassigned для текущего состояния билета. В настоящее время булево используется для обозначения если конкретного пользователя назначается текущему состоянию билета. Любые идеи / мысли о реализации этого? Edit2 Heres один я подумал: класс WorkflowActivity (models.Model): ... ... assigned_to = models.ManytoManyField ( 'Участие') # старше таблица без текущего поля тока = models.ManytoManyField ( 'Current') Класс Current (models.Model): участник = models.ForeignKey ( 'Участие') пресмыкаться достойным я знаю,
zsquare
1

голосов
1

ответ
527

Просмотры

Linq запрос, вопрос таблица соединений

Я хочу написать запрос, который представляет для каждого события (tbl_events) все объекты (tbl_objects), связанные с ним (тип отношения - М: N). У меня есть проблема с таблицами, которые являются таблицами соединений (класс ассоциации), который содержит только внешние ключи от 2-х таблиц, которые соединяют. Например, tbl_events связано с таблицей подключения имени tbl_object_has_tbl_events к tbl_objects. Вот структура связных таблиц: TBL событий: EVENTID, именем_события tbl_object имеет: ObjectId, Objectname tbl_object_has_tbl_events: EVENTID, ObjectId Вот что я пытался написать:. IList DataList = (от dEvent в App.glidusContext.tbl_events присоединиться к dObject в App.glidusContext.tbl_objects на dEvent.tbl_objects равна dObject.objectID выбрать новый {dEvent.eventName, dObject.objectName}) ToList (). Я могу' т достичь таблица соединений tbl_object_has_tbl_events Мой вопрос, как я могу реализовать такой запрос, когда у меня есть M: N отношения. Благодарю. UPDATE поколение Многие-ко-многим: - -------------------------------------- --------------- - Таблица tbl_events - ----------------------------- ------------------------ CREATE TABLE tbl_events (INT с кодом события NOT NULL IDENTITY, EventName NVARCHAR (100) NOT NULL, PRIMARY KEY (EventID)); - ------------------------------------------------ ----- - Таблица tbl_objects - --------------------------------------- -------------- CREATE TABLE tbl_objects (ObjectId INT NOT NULL IDENTITY, ObjectName NVARCHAR (100) NOT NULL, то первичный ключ (ObjectId));
Mike B.
1

голосов
3

ответ
299

Просмотры

Изменение значения столбца состояния при добавлении друга с доктриной

Я теперь, начиная с доктриной 2 и Zend Framework, и я создаю систему дружбы между пользователями. В таблице друзья моей базы данных, у меня есть следующие столбцы: user_id | Friend_id | Статус Если статус является число, которое может быть -1, 0 или 1. Я использую отношения многие-ко-многим, более конкретно, то же самое показано в документации Doctrine: HTTP: //www.doctrine-project. орг / документы / ОРМ / 2,0 / ен / ссылка / ассоциативно-mapping.html # многие-ко-многим-автореферентное Но я (к сожалению) не знаю, как изменить значение столбца состояния таблицы друзей. :( Как действовать EDIT: В столбце состояния находится внутри таблицы друзей, а не в таблице пользователей.
JCM
1

голосов
2

ответ
188

Просмотры

Grails: утиная типизация и многие-ко-многим классы коллекций

В моем приложении Grails, Человек имеет пристрастие к чему-то - и что-то может быть идея, решение, группа, или другое лицо. В Java я бы наложить Something интерфейс, так что каждый из этих классов может быть принят в качестве типа Something. В Groovy / Grails, я имел это работает, где-то есть Groovy класс и класс Нежность класс коллекции, которая отображается на лицах Somethings. Я спотыкаюсь, когда я пытаюсь использовать Duck Typing в данном случае. Как настроить отображение класса коллекции Person к любому из моей группы классов, не накладывая интерфейс? Благодаря за любые советы! Я рад слышать, как разработчики G / G будет подходить к этому. -Билл
Bill Spornitz
1

голосов
1

ответ
45

Просмотры

Как я могу удалить многие-ко-многим между двумя динамическими объектами?

Я хочу, чтобы удалить многие-ко-многим между двумя динамическими структурами. Я видел примеры использования фиктивных объектов, но они не были динамичными. Я не буду знать предмет или название коллекции навигационных свойств объектов, до времени выполнения. Так что я не могу просто сказать, apple.Oranges.Remove (оранжевый) Мне нужно сделать это динамически. Нечто подобное, dynamicModel.dynamicCollection (CollectionName) .Remove (otherDynamicModel) Мне не нужны методы расширения обязательно, только то, что получает работу. Как я могу это сделать? Благодарю. (Я не знаю, что другие детали могут быть полезны для обеспечения так как объекты являются динамическими?)
Benjamin
1

голосов
1

ответ
152

Просмотры

Установка новых значений для каждого многие-ко-многим в сущности основных данных

Это сводит меня с ума, и, скорее всего, я делаю это неправильно. Поэтому у меня есть два объекта: Критерии и вариант, который имеет отношения многие ко многим. Атрибуты для каждого из них Опция: Optionname Критерий: criteriaName criteriaRank В моем приложении я создаю все мои варианты и установить его имя. Тогда я вставить критерии и добавить, что для каждого варианта: Критерии * aCriteria = [NSEntityDescription insertNewObjectForEntityForName: @ "Критерии" inManagedObjectContext: [решение managedObjectContext]]; aCriteria.criteriaRank = [NSNumber numberWithInt: 1]; // Добавить новые критерии в массив критериев и в виде таблицы. [CriteriasArray AddObject: aCriteria]; NSEnumerator * перечислитель = [fetchedOptions objectEnumerator]; Опция * anOption; в то время как (anOption = [перечислитель nextObject]) {[anOption addCriteriasObject: aCriteria]; } То, что я хочу, что для каждого варианта, можно ранжировать каждый критерий, но когда я загрузить список критериев для каждого варианта и установить его ранг с помощью ползунка и сохранить все другие параметры отображения и то же значение я просто обновляется. Я выборка критерии следующим образом: // извлечение всех условий NSSortDescriptor * sortDescriptor = [[NSSortDescriptor Alloc] initWithKey: @ "criteriaName" по возрастанию: YES]; NSArray * sortDescriptors = [[NSArray Alloc] initWithObjects: sortDescriptor, ноль]; NSMutableArray * sortedCriterias = [[NSMutableArray Alloc] initWithArray: [option.criterias AllObjects]]; [SortedCriterias sortUsingDescriptors: sortDescriptors]; self.criteriasRankingArray = sortedCriterias; Я хочу, чтобы иметь возможность добавлять критерии, а затем по каждому варианту, ранжировать каждый критерий. Могу ли я приближаюсь это неправильный путь? Помогите!! Благодарю. Я могу ранжировать каждый критерий, но когда я загрузить список критериев для каждого варианта и установить его ранг с помощью ползунка и сохранить все другие параметры отображения и то же значение я просто обновляется. Я выборка критерии следующим образом: // извлечение всех условий NSSortDescriptor * sortDescriptor = [[NSSortDescriptor Alloc] initWithKey: @ "criteriaName" по возрастанию: YES]; NSArray * sortDescriptors = [[NSArray Alloc] initWithObjects: sortDescriptor, ноль]; NSMutableArray * sortedCriterias = [[NSMutableArray Alloc] initWithArray: [option.criterias AllObjects]]; [SortedCriterias sortUsingDescriptors: sortDescriptors]; self.criteriasRankingArray = sortedCriterias; Я хочу, чтобы иметь возможность добавлять критерии, а затем по каждому варианту, ранжировать каждый критерий. Могу ли я приближаюсь это неправильный путь? Помогите!! Благодарю. Я могу ранжировать каждый критерий, но когда я загрузить список критериев для каждого варианта и установить его ранг с помощью ползунка и сохранить все другие параметры отображения и то же значение я просто обновляется. Я выборка критерии следующим образом: // извлечение всех условий NSSortDescriptor * sortDescriptor = [[NSSortDescriptor Alloc] initWithKey: @ "criteriaName" по возрастанию: YES]; NSArray * sortDescriptors = [[NSArray Alloc] initWithObjects: sortDescriptor, ноль]; NSMutableArray * sortedCriterias = [[NSMutableArray Alloc] initWithArray: [option.criterias AllObjects]]; [SortedCriterias sortUsingDescriptors: sortDescriptors]; self.criteriasRankingArray = sortedCriterias; Я хочу, чтобы иметь возможность добавлять критерии, а затем по каждому варианту, ранжировать каждый критерий. Могу ли я приближаюсь это неправильный путь? Помогите!! Благодарю.
hafizito

Просмотр дополнительных вопросов