Django-admin中的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)
但是,当我添加新用户并选择城市时,会出现该错误:/ admin / auth / user / add /中的IntegrityError
(1062,\“密钥\'user_id \'\”的重复条目\'3 \')
我的代码有什么问题?如果我没有选择任何城市-用户添加正确。通过某种方式,用户被多次添加到UserProfile中。
没有找到相关结果
已邀请:
1 个回复
厘恼轨
:
本质上,这只是检查相关用户是否存在现有的UserProfile。如果是这样,它将此UserProfile的pk设置为该pk,以便Django进行更新而不是创建。