0

アカデミックな目的で、会社のクライアント、プロジェクト、およびスタッフ メンバーを管理できるソフトウェアを作成しています。別のモデルで外部キーを参照することで、2 つのモデルを並べて表示し、関連付けることができることがわかりました。問題は、モデルごとに 1 つの項目しか表示されないことです。

例: あなたの会社が取り組んでいるプロジェクトがあります。管理セクションには、プロジェクト名と 1 人のスタッフ メンバーが表示されます。ただし、2 人以上のスタッフが表示されているはずです。

ファイル レイアウトは次のとおりです (さまざまなフィールドのクライアントがプライマリで、プロジェクトがセカンダリの別のアプリを作成しようとしました)。

client.admin:

from django.contrib import admin
from django.db import models
from clients.models import Status, Project, Staff_Member, Client

class StatusInline(admin.TabularInline):
    model = Status
    extra = 0



class Staff_MemberInline(admin.TabularInline):
    model = Staff_Member
    extra = 5
    project = models.ForeignKey(Project)

class ProjectInline(admin.TabularInline):
    model = Project

    extra = 1

class ClientAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,  {'fields': ['name']}),


    ]
    inlines = [ProjectInline, StatusInline]

    search_fields = ['name']



admin.site.register(Client, ClientAdmin)
#admin.site.register(Project)
admin.site.register(Staff_Member)

次のファイル

クライアント.モデル:

from django.db import models
import datetime
from django.utils import timezone
# Create your models here.
class Client(models.Model):
    name = models.CharField(max_length=200)


    def __unicode__(self):
        return self.name
    #def was_published_recently(self):
    #   return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    #was_published_recently.admin_order_filed = 'pub_date'
    #was_published_recently.boolean = True
    #was_published_recently.short_description = 'Published recently?'

class Status(models.Model):
    client = models.ForeignKey(Client)
    #staff_member = models.ForeignKey(Staff_Member)
    #project = models.ForeignKey(Project)
    status_text = models.CharField(max_length=200)
    def stat(self):
        return self.status_text
    def __unicode__(self):
        return self.status_text









class Staff_Member(models.Model):
    #status = models.ForeignKey(Status)
    #project = models.ForeignKey(Project)
    #client = models.ForeignKey(Client)
    staff_member_text = models.CharField(max_length=200)


    def __unicode__(self):
        return self.staff_member_text

    def mem(self):
        return self.staff_member_text

class Project(models.Model):
    client = models.ForeignKey(Client)
    project_text = models.CharField(max_length=200)
    staff_member = models.ForeignKey(Staff_Member)

    #status = models.ForeignKey(Status)
    def __unicode__(self):
        full_name = self.client.name +'\'s '+ self.project_text
        return full_name
    def project_name(self):
        return self.project_text
    name = client.name

次のファイル

プロジェクト管理者:

from django.contrib import admin
from django.db import models
from clients.models import Project, Status, Client
from clients.admin import StatusInline, Staff_MemberInline

class ClientInline(admin.TabularInline):
    model = Client
    extra = 1

#class ProjectAdmin(admin.ModelAdmin):
#   inlines = [Staff_MemberInline, ClientInline]

#admin.site.unregister(Project)

admin.site.register(Project)#, ProjectAdmin)    

次のファイル

プロジェクト.モデル

from django.db import models
import datetime
from django.utils import timezone
from django.db import models
from clients.models import *
# Create your models here.

私はstackoverflowにかなり慣れていないので、これをより見やすくするために欠けている方法があれば教えてください。

ありがとう!

4

1 に答える 1

0

大きい数値に変更extra = 1してください。詳しくはドキュメントをご覧ください。

于 2013-08-05T20:09:20.647 に答える