0
class Data(models.Model):
    user = models.ForeignKey(User, unique=True)
    name = models.CharField(null=False, max_length=250)


class OtherData(models.Model):
    user = models.ForeignKey(User, unique=True)
    something = models.CharField(max_length=250)

Django Adminでスタックインラインのようなものを作成する方法はありますが、外部キーはありませんか?管理ページでオブジェクトを確認する場合、オブジェクト(同じユーザーに属する)Dataも表示したいOtherData

4

1 に答える 1

0

Data と OtherData を同じフォームで管理する場合は、次のようにします。

  1. admin で User モデルを使用し、
  2. Data と OtherData に 2 つのスタック インラインを追加します。
  3. ユーザーのすべてのファイルを除外するか、参照用にユーザー名を read_only にします
  4. 私の知る限り、一度だけ登録できるため、おそらく User モデルの登録を解除してから再度登録する必要があります。

これがサンプルコードです

from django.contrib.admin import StackedInline
from django.contrib.auth.models import User
from models import Data, OtherData

class DataInline(StackedInline):
    model = Data
    #form = you can customize your form
    #max_number = define the number of inlines

class OtherDataInline(StackedInline):
    model = OtherData

class UserAdmin(admin.ModelAdmin):
    inlines = (DataInline, OtherDataInline,)
    fields = ('username',)
    readonly_fields = ('username',)

#the user can be regitered just once in the admin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

ユーザーが複数の Data または OtherData を持っている場合は、TabularInline を試すことができます。つまり、モデルに一対多の関係がある場合です。インラインの柔軟性は信じられないほどです。

于 2013-01-25T13:56:28.920 に答える