Django - Поле UserProfile m2m в админке - ошибка

Мои модели:

class UserProfile(models.Model):
    TYPES_CHOICES = (
        (0, _(u'teacher')),
        (1, _(u'student')),
    )
    user = models.ForeignKey(User, unique=True)
    type = models.SmallIntegerField(default=0, choices=TYPES_CHOICES, db_index=True)
    cities = models.ManyToManyField(City)
class City(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50)

В admin.py:

admin.site.unregister(User) 
class UserProfileInline(admin.StackedInline):
    model = UserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [UserProfileInline]

admin.site.register(User, UserProfileAdmin)

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    """Create a matching profile whenever a user object is created."""
    if created:
        profile, new = UserProfile.objects.get_or_create(user=instance)

Но когда я добавляю нового пользователя и выбираю город, я получаю эту ошибку: IntegrityError at /admin/auth/user/add/ (1062, "Duplicate entry '3' for key 'user_id'")

Что не так с моим кодом? Если я не выбираю ни один город - пользователь добавляется правильно. Каким-то образом пользователь добавляется в UserProfile более одного раза.

9
задан robos85 24 May 2011 в 21:51
поделиться