Джанго показывает слишком много предупреждений при удалении объекта - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть две модели:

class Account(models.Model):
    main_request = models.ForeignKey('JournalistRequest', related_name='main_request')
    key = models.CharField(_('Key'), max_length=100)

class JournalistRequest(models.Model):
    account = models.ForeignKey(Account, blank=True, null=True)

Когда я пытаюсь удалить JournalistRequest, он показывает предупреждение с большим количеством вложений, как

Are you sure you want to delete the selected Заявка СМИ objects? All of the following objects and their related items will be deleted:

   Journalist Request: some request
        Account: some account
            Journalist Request: some request
                Account: some account
                    Journalist Request: some request
                        Account: some account
                            Journalist Request: some request
                                Account: some account
                                    Journalist Request: some request

Все учетные записи одинаковы (идентификаторы одинаковы), и все запросы одинаковы, поэтому я думаю, что это из-за рекурсии Но я понятия не имею, как решить эту проблему в Django 1.1.1! Вы можете мне помочь?

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Итак, у вас есть внешний ключ учетной записи для JournalistRequest, и у вас также есть внешний ключ JournalistRequest для учетной записи. Вероятно, нет необходимости иметь внешние ключи в обоих модельных классах. Удаление одного из внешних ключей очистит круговую зависимость.

Если это не так, вы можете переопределить метод удаления для одного или обоих классов в зависимости от того, какой тип поведения вы ищете.

0 голосов
/ 29 апреля 2010

Я думал, что моя цель ясна: иметь много запросов в одной учетной записи, и один из запросов должен быть основным. Какую схему мне использовать для этого?

class Account(models.Model):
    #whatever

class JournalistRequest(models.Model):
    account = models.ForeignKey(Account)
    is_main = models.BooleanField(default=False)
...