Может unique_to вместе избегать нулей в Django - PullRequest
0 голосов
/ 06 марта 2020

Я использую django и Sql сервер в качестве базы данных. У меня есть таблица с несколькими первичными ключами, используя unique_together

class Attribute_tmp(models.Model):
    useridtmp = models.ForeignKey(User_tmp, on_delete=models.CASCADE, blank =True, null = True)
    userid = models.ForeignKey(User, on_delete=models.CASCADE, blank =True, null = True)
    fk_str = models.ForeignKey(Stream, on_delete=models.CASCADE)
    class Meta:
            unique_together = (('userid', 'fk_str'),('useridtmp', 'fk_str'))

Так что, когда я добавляю объекты этой таблицы, когда useridtmp нулевой, он не работает, потому что у меня будет дубликат ключ.

Мой вопрос: как мне избежать нулевых значений?

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Поскольку в поле ForeignKey у вас есть null = True и пусто = True, для db целесообразно хранить нулевые значения.

Если в любом случае два ForeignKeys не должны быть нулевыми, вы можете пометить пустые и пустые как ложные. Просто удалив их из настроек поля, добьемся цели, так как они установлены в false по умолчанию. Вам, вероятно, нужно воссоздать базу данных , чтобы новые настройки работали.

Тогда unique_together не будет иметь проблемы с нулевыми значениями.

0 голосов
/ 06 марта 2020

Вы пробовали это?

 class Meta:
        constraints = [
            models.UniqueConstraint(fields=['userid', 'fk_str'], name='name of constraint'),
            models.UniqueConstraint(fields=['useridtmp', 'fk_str'], name='another name of constraint')
        ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...