簡體   English   中英

Django ORM unique_together無法正常工作

[英]Django ORM unique_together not working

我正在使用django 1.6和postgressql。 我正在嘗試設置由名稱和地址字段組成的復合唯一鍵。 我的模特:

class MU2(models.Model):
    name = models.CharField(max_length=200,default="",unique=True)
    addresses = models.CharField(max_length=200,default="")
    ......

class Meta:
   unique_together = ("name", "addresses")

在我看來:

for practice in practices:
    p =MU2(**practice)
    try:
        p.save()
    except ValidationError:
       pass

復合鍵不起作用,我在名稱和地址字段上都得到了重復的記錄。

我究竟做錯了什么?

您至少“做錯了”三件事:

  1. 您的class Meta語句縮進嚴重-它應與字段聲明處於同一級別

  2. unique_together期望一個元組的元組,而不是單個元組

  3. 如果出現問題,您的“ pass” except子句會阻止您獲取任何有用的調試信息。 並不是說它可以解決您當前的問題,但這仍然是錯誤的...

另外,地址不是2600個字符長的“廚房水槽”位存儲桶(它通常是具有兩個或三個地址行,郵政編碼,城市名稱等的結構化數據類型-在關系模型中,它應該/應該是表格它本身),並且很少有SQL數據庫會處理2600個字符長的varchar字段,因此,我們不要談論將其用作復合索引的一部分...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM