1
사용자를 forgignKey로 사용하는 모델이 있습니다. 그리고 관리자, 난 그것을 사용자 이름의 전체 이름 instread로 표시해야합니다. 그때 나는 신청했다django : 주문 및 표시 이름 충돌
class CollaboratorInLine(admin.StackedInline):
model = Collaborator
#list_display = ('collaborator__collaborator_first_name')
extra = 0
form =CollaboratorForm
#raw_id_fields=("collaborator",)
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
field = super(CollaboratorInLine, self).formfield_for_foreignkey(
db_field, request, **kwargs)
if db_field.rel.to == User:
field.label_from_instance = self.get_user_label
return field
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
field = super(CollaboratorInLine, self).formfield_for_manytomany(
db_field, request, **kwargs)
if db_field.rel.to == User:
field.label_from_instance = self.get_user_label
return field
def get_user_label(self, user):
name = user.get_full_name()
return name
그것은 fullnames를 가진 드롭 다운 명부로 잘 작동한다. 그런 다음 알파벳순으로 정렬하고 싶습니다. 그 다음이 적용됨
class CollaboratorForm(forms.ModelForm):
collaborator = forms.ModelChoiceField(queryset=User.objects.order_by('first_name'))
#assert False,collaborator
class Meta:
model = Collaborator
이 적용됩니다. 전체 이름은 다시 사용자 이름이됩니다. 내가 그것을 제거하면 그것은 완전한 이름이됩니다. 두 기능을 모두 유지하려면 어떻게해야합니까?
감사
안녕하세요 Alasdair; CollaboratorInLine에서 작동합니다. 하지만 어떻게 클래스 보고서 (models.Model) 다음과 같은 인라인하지 whcih 보고서 제출자에 대한 : 팀 = models.ForeignKey (팀) 프로젝트 = models.CharField (MAX_LENGTH = 255) 요약 = models.TextField() submitter = models.ForeignKey (사용자, editable = True, related_name = 'report_submitter') – Grey
나는 같은 방법을 시도했다. 하지만 제출자에 대한 작업을하지 않았다 – Grey
내 나쁜 내가 양식을 할당 잊어 버렸습니다. 덕분에 Alasdair 완벽하게 작동합니다. – Grey