【发布时间】:2016-10-12 07:26:42
【问题描述】:
我有一个名为 Farmer 的模型,它扩展了“用户”,而且它还有一些附加属性,如出生日期、电话号码等。
如何在 Farmer 模型中使用用户的 first_name、last_name 等属性来引用?或者我可以如何在 Farmer 表的管理界面上显示它们?我不想在我的 Farmer 模型中再次使用 first_name,last_name,因为它是重复的。本质上,Farmer 也是一个具有相同名字和姓氏的用户。
我尝试了以下操作,当我尝试添加新农民时,这给了我"Field 'first_name' doesn't have a default value" 错误。
class Farmer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
birth_date = models.DateField(auto_now=False)
address = models.TextField(max_length=500)
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], blank=True, max_length=20) # validators should be a list
#This helps to print in admin interface as e.g. Thomas the farmer, without this in admin interface you see farmer object which is difficult to distinguish
def __str__(self):
print(self.user.first_name) # __unicode__ on Python 2
return "%s" % (self.user)
我的管理员.py
class UserAdmin(admin.ModelAdmin):
list_display = ('id','username' ,'email', 'is_active', 'date_joined', 'is_staff','last_login', )
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.site.register(Farmer)
【问题讨论】:
-
这个错误什么时候发生,在迁移过程中还是在创建一个新的农场主的时候?
-
创建新农户时,迁移成功。然后我删除了所有现有用户,创建了新的超级用户,然后创建了一个用户。
-
您在模型中引用的
User,是django.contrib.auth.User吗?您是通过 UserAdmin 还是通过 FarmerAdmin 创建新用户? -
是的,它是 django.contrib.auth.User。我通过默认 API 点击 rest-auth/registration 创建了一个用户,在管理界面中我尝试创建一个抛出错误的农民。在 Farmer 的管理界面中,我可以看到一个收集所有用户的下拉列表。
-
你试过我的答案了吗?
标签: django django-models django-admin django-rest-framework