[英]Django ModelFormset name instead of ID in foreign key field
可以這么說,我對modelformset自定義字段有疑問。 到目前為止,這是代碼,它可以正常工作:
models.py:
class Workplace(models.Model):
user = models.ForeignKey(User)
description = models.TextField(blank=True, null=True)
organization = models.ForeignKey(Organization)
position = models.CharField(max_length=250, null=True)
start = models.DateTimeField(null=True, blank=True)
end = models.DateTimeField(null=True, blank=True)
place = models.ForeignKey(Place, null=True, blank=True)
deleted = models.BooleanField(default=False)
forms.py:
class UserWorkplaceForm(forms.ModelForm):
class Meta:
model = Workplace
labels = {
'deleted': 'Delete this position'
}
def __init__(self, *args, **kwargs):
super(UserWorkplaceForm, self).__init__(*args, **kwargs)
self.fields['position'].required = True
self.fields['organization'].required = True
self.fields['start'].required = True
views.py:
def settings_workplace(request):
workplace_formset = modelformset_factory(Workplace,
form=UserWorkplaceForm,
fields=('user', 'position', 'organization', 'start', 'end', 'deleted'),
widgets={'user': forms.HiddenInput(),
'start': forms.DateInput(attrs={'class': 'workplace-date'}),
'end': forms.DateInput(attrs={'class': 'workplace-date'}),
'deleted': forms.CheckboxInput(),
'organization': forms.TextInput()
},
extra=0)
if request.method == "POST":
formset = workplace_formset(request.POST)
if formset.is_valid():
formset.save()
formset = workplace_formset(queryset=request.user.get_profile().workplace.filter(deleted=False))
else:
formset = workplace_formset(queryset=request.user.get_profile().workplace.filter(deleted=False))
context = {
'formset': formset
}
return render_to_response('accounts/settings_workplaces.html', context, RequestContext(request))
“組織”字段呈現為Select HTML元素。 我不能擁有它,因為數據庫中有成千上萬的組織。 我想做的是將“組織”顯示為文本字段。 這就是我在小部件部分所做的。 但是,這給了我該字段的ID,通常不是名稱。 有辦法讓我兩者兼得嗎? 我需要一個更好的顯示名稱,並且需要ID(以防在其他字段上進行編輯),因為該字段是必需的。
有任何想法嗎?
您能否將其第一個值為組織ID,第二個值為組織的人類可讀名稱作為ChoiceField
? 這是我處理這種情況的建議。 這是在Django中設置“選擇”的文檔:
https://docs.djangoproject.com/zh-CN/1.7/ref/forms/fields/#choicefield
https://docs.djangoproject.com/zh-CN/1.7/ref/models/fields/#choices
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.