1

選択フィールドの値をフィルタリングする際に問題が発生しています。

私のアプリケーションのモデルは次のとおりです。

from django.db import models

class Role(models.Model):
    name = models.CharField(max_length=20, blank=False)

    def __unicode__(self):
        return self.name

class Rank(models.Model):
    name = models.CharField(max_length=20, blank=False)
    role = models.ForeignKey(Role, blank=False)

    def __unicode__(self):
        return self.name

class Member(models.Model):

    name = models.CharField(max_length=100, blank=False)
    rank = models.ForeignKey(Rank, verbose_name = 'Member Rank')
    mainrole = models.ForeignKey(Role, related_name = 'main_role', blank=False)
    secondaryrole = models.ForeignKey(Role, related_name = 'secondary_role', blank=False)
    picture = models.ImageField(
        null=True,
        blank=False,
        upload_to='member/pictures/',
        )


    def __unicode__(self):
        return self.name

明確にするために。メンバーは 1 つRank、そこからRank最大 2 つの異なるRoles. ただし、Ranks「n」種類のRoles.

私が抱えている2つの問題:

  1. admin では、の名前は、そこに添付されてRankいる回数だけ選択フィールドに表示されます。Roles重複する名前を取り除き、1 つのレコードだけを残す方法はありますか? これは、私がクラスをモデル化した方法に関係している可能性があります.Djangoは初めてです。

  2. を選択した場合、ユーザーが保存 (ajax 風) を押す前に、Rank彼の 2 つの選択フィールドをそので使用できるRolesようにフィルター処理する必要があります。これを行う方法はありますか?どのように?RolesRank

お時間をいただきありがとうございます。

私のモデル管理者からのコードで編集:

class MemberInlineFormset(BaseInlineFormSet):
    def add_fields(self, form, index):
        super(MemberInlineFormset, self).add_fields(form, index)
        roles = Role.objects.none()
        if form.instance:
            try:        
                rank = form.instance.rank
            except Rank.DoesNotExist:
                pass   
            else:  
                roles= Role.objects.filter(role__within=Rank.role)
        form.fields['mainrole'].queryset = roles
        form.fields['secondaryrole'].queryset = roles



class MemberInline(admin.TabularInline):
    model = Member
    formset = MemberInlineFormset
4

0 に答える 0