Как получилось, в Джанго уникальности не держатся? - PullRequest
1 голос
/ 13 июля 2011
class A(models.Model):
    title = models.CharField(max_length=240,null=True, blank=True, db_index=True)
    body = models.TextField(blank=True, null=True)
    adinfo = models.CharField(max_length=240, null=True, blank=True, db_index=True)
    url = models.CharField(max_length=10000, null=True,blank=True)
    img = models.CharField(max_length=10000, null=True,blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True, db_index=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)
    class Meta:
        unique_together = (('title','adinfo'),)


mysql> select * from mo_a where id = 1113\G;
*************************** 1. row ***************************
        id: 1113
     title: Tides Tavern
      body: Come in and enjoy the morning sun or a nice sunset with breakfast, lunch or dinner. Find a seat, put your feet up & enjoy. Click here!
    adinfo: NULL
       url: 
       img: http://creative.ak.fbcdn.net/v41818/flyers/125/47/13039135731061564765_1_89254352.jpg
created_at: 2011-07-08 00:41:18
updated_at: 2011-07-08 00:41:18
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> select * from mo_a where id = 1114\G;
*************************** 1. row ***************************
        id: 1114
     title: Tides Tavern
      body: Come in and enjoy the morning sun or a nice sunset with breakfast, lunch or dinner. Find a seat, put your feet up & enjoy. Click here!
    adinfo: NULL
       url: 
       img: http://creative.ak.fbcdn.net/v41818/flyers/125/47/13039135731061564765_1_89254352.jpg
created_at: 2011-07-08 00:41:22
updated_at: 2011-07-08 00:41:22
1 row in set (0.00 sec)

ERROR: 
No query specified

Это нормально?Как видите, у меня есть заголовок и adinfo uniqued ... Я НЕ хотел вставлять # 1114.Но это так.Как удалить все дубликаты в базе данных?

1 Ответ

1 голос
/ 09 февраля 2012

Как вы указали свое уникальное ограничение, вы заявляете, что не допускаете вставку дубликатов для пар.

Как вы указали, вы сможете вставить пары:

(1113, 'Tides Tavern') and (1114, 'Tides Tavern')

или

(1113, 'Roman road') and (1113, 'Tides Tavern')

но не:

(1113, 'Tides Tavern') and (1113, 'Tides Tavern')

Другими словами, из Postgresql docs: "Многозначный уникальный индекс будет отклонять только те случаи, когда все проиндексированные столбцы равны в двух строках."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...