Django独特的组合是重复的

时间:2017-07-30 07:17:21

标签: python django python-3.x web django-models

django.db.utils.IntegrityError: (1062, "Duplicate entry 'Restauarant' for key 'restaurants_restaurant_name_address_id_e074fa2e_uniq'")

以上是错误。如餐馆模型所示,我已经定义了地址和名称应该是唯一的。虽然当我创建一家餐馆时,如果名称和地址的组合是唯一的,但它们中的任何一个都与另一个餐馆对象相同,那么这就失败了。例如。如果在“35 Something Else Street”有一个像“餐厅”这样的现有物品,“10 Something Street”的“餐厅”将会失败。任何建议都会很棒,谢谢。

class Restaurant(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=128)
    street_number = models.CharField(max_length=10)
    route = models.CharField(max_length=128)
    locality = models.CharField(max_length=116)  # 2* 58 (longest place name)
    administrative_area_level_1 = models.CharField(max_length=116, default=None)  
    postal_code = models.CharField(max_length=12)
    country = CountryField()
    slug = models.SlugField(max_length=128)
    profile_image = models.ImageField(upload_to='profile_images', blank=True)
    menu = models.ManyToManyField(Menu)
    favourites = models.IntegerField(default=0, editable=False)
    is_active = models.BooleanField(default=True)

    class Meta:
        # ensures unique combination, prevents duplicate 'restaurants'
        unique_together = ((
            'name',
            'street_number',
            'route',
            'locality',
            'administrative_area_level_1',
            'postal_code',
            'country'
        ))

1 个答案:

答案 0 :(得分:0)

您的代码中存在可能导致错误的拼写错误。

public partial class SomeViewController : UIViewController,sampleDelegate{ public void openSuggestorView(){ SuggesterTableViewController suggestVC = (SuggesterTableViewController)this.Storyboard.InstantiateViewController("SuggestTableVC"); suggestVC._workerDelegate = new WeakReference<sampleDelegate>(this); } public void GetSelectedItem(){ Console.WriteLine("Callback called"); } } 应该是一个元组元组,但是在内部元组括号后你错过了一个逗号。

这可能会有所帮助:

unique_together

现在,当您重新运行迁移时,可能不会收到该错误。

同样很快 - 假设slug是从名称派生的,在unique_together = (( 'name', 'street_number', 'route', 'locality', 'administrative_area_level_1', 'postal_code', 'country' ), ) 而不是slug设置唯一性可能更有意义。由于案例的变化,你不希望某些东西超越唯一约束。