1

私は「ユーザー」を拡張し、プラスそれは誕生日のようないくつかの追加属性を持っている農家と呼ばれるモデルがあり、電話番号などDjangoはどのように私は、このようなfirst_nameの、で参照するLAST_NAMEなど、ユーザーの属性を使用することができ、ユーザモデル

を拡張ファーマーモデル?または、私はFarmerテーブルの管理インターフェースにどのように表示できますか?私はファーマーモデルでfirst_name、last_nameをもう一度繰り返すことはしたくない。本質的にファーマーは同じfirst_name & last_nameを持つユーザーでもあります。

新しい農家を追加しようとすると、"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) 

マイadmin.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) 
+0

このエラーは、移行中または新しい農家の作成中にいつ発生しますか? – tobltobs

+0

新しい農家を作っているうちに、移行は成功しました。私はその後、すべての既存のユーザーを削除し、新しいスーパーユーザーを作成し、後で1人のユーザーを作成しました。 – Nitish

+0

あなたのモデルで参照している 'User'は、' django.contrib.auth.User'ですか? UserAdminまたはFarmerAdmin経由で新しいユーザーを作成しますか? – tobltobs

答えて

1

です少しタイピングが必要です。

class FarmerAdmin(admin.ModelAdmin): 

    def get_username(self): 
     return self.user.username 

    def get_is_staff(self): 
     return self.user.is_staff 

    list_display = (get_username, get_is_staff, ....) 

    def get_queryset(self, request): 
     return super(FarmerAdmin, self).get_queryset(request).select_related('user') 

クエリセットの変更が必要な場合は、管理リストビューの各行がクエリになります。 __str__メソッドも同じ効果があります。

0

クラスファーマー(ユーザー):

これは行いますがそれが得る関連のモデルがリスト表示に表示されるようにするのはとても簡単だ仕事

+0

これは基本的に私の管理インターフェースからFarmerを削除し、Userとfarmerの両方の属性を持つUsersへのリンクを再度与えました。それは私が望むものではありません。 – Nitish

関連する問題