У меня есть группы и люди, я хочу, чтобы внутри группы не могло быть более одного человека с тем же именем ... но в разных группах это нормально ... довольно легко. Мой код:Django - Очистить поле, обратитесь к Связанному объекту
class Group(model.Model):
name = models.CharField() #irrelevant
class Person(models.Model):
name = models.CharField(max_length=255, unique=False)
related_group = models.ForeignKey(Group)
def clean(self):
if self.related_group:
for pip in self.related_group.person_set.all():
if pip.name == self.name:
raise ValidationError("Name already exists in this Group")
Я получаю эту ошибку:
RelatedObjectDoesNotExist at /create/person/ # the url of creating the object
Человек не имеет related_group.
Я думаю, проблема в том, что мне нужно найти способ обратиться к группе (в форме) спасибо.
Это работает, но, к сожалению, это вызывает ошибку целостности, а не «Ошибка проверки», есть ли что-то, что я могу сделать, чтобы поднять ошибку проверки? почему в первую очередь он не получает связанную_группу, которую он должен получить? –
Если вы используете модельные формы, для вас нужно проверить «unique_together», если только вы не исключили одно из полей формы. Можете ли вы показать свое мнение? – Alasdair
@Alasdair Вы должны включить использование '' 'get_or_create'' и/или' '' update_or_create'' в свой ответ, чтобы показать, как создавать/обновлять Person. – schillingt