Всем добрый день. Есть некая модель permission, каждый объект которой (каждая запись) должен быть уникальным.
class Permission(models.Model):
id = models.AutoField(primary_key=True)
node = models.ForeignKey(Node, related_name='permissions_to_node')
mac = CharField(blank=True, null=True, validators=[validate_mac_address])
internet_proto = CharField(max_length=30, blank=True)
input = models.ForeignKey(Interface, blank=True, null=True, related_name='input_interface')
output = models.ForeignKey(Interface, blank=True, null=True, related_name='output_interface')
time_start = models.TimeField(blank=True, null=True)
time_end = models.TimeField(blank=True, null=True)
class Meta:
unique_together = [
('node', 'mac', 'internet_proto', 'input', 'output', 'time_start', 'time_end'),
]
При этом обязательным полем является только одно: node. В unique_together я указываю все поля данной модели чтобы запись была уникальна по всем полям. После этого, отправляя POST запрос, от меня требуется указывать значения для всех полей.
Если я в body запроса укажу так:
{"node": 1, "mac": "", "time_start": null, "time_end": null, "internet_proto": "", "output": "", "input": "" }
или так:
{"node": 1, "mac": null, "time_start": null, "time_end": null, "internet_proto": "", "output": null, "input": null }
то проверка на уникальность не выполняется. Т.е. с такими данными я могу добавить сколько угодно объектов в БД.
Прочитал это:
Django has not considered NULL to be equal to NULL for the purpose of uniqueness checks since ticket #9039 was fixed, see: http://code.djangoproject.com/ticket/9039
Но как тогда сделать то что мне нужно?