0
我有一個奇怪的問題,我不能補救:當使用包含兩個模型之間的外鍵屬性的窗體時,Django不顯示任何用戶的屬性,除了用戶名。Django窗體顯示用戶屬性
關聯的用戶名顯示正確,但沒有其他屬性是(名字,姓氏,電子郵件等)。
同樣,我放置在views.py中的調試打印語句正確地在終端輸出中打印用戶的屬性。
爲什麼用戶的任何屬性都不顯示在html模板中?
models.py
class UnitGroup(models.Model):
unit_name = models.CharField(max_length=150, verbose_name='Unit Name')
class UnitUser(models.Model):
user = models.OneToOneField(User)
unit = models.ForeignKey(UnitGroup)
ROLES = ((0, 'Admin'), (1, 'Member'))
role = models.IntegerField(null=True, blank=True, verbose_name='Role', choices=ROLES)
def __string__(self):
return self.user.first_name
forms.py
class UserGroupForm(forms.ModelForm):
class Meta:
model = UnitUser
fields = '__all__'
views.py
from units.forms import UnitForm, UnitDetailsForm, UserGroupForm
from units.models import UnitGroup, UnitDetails, UnitUser
from django.contrib.auth.models import User
def edit_members(request):
if request.user.is_authenticated() \
and request.method == 'GET' \
and 'unit' in request.GET:
unit_group = request.GET['unit']
unit_users = UnitUser.objects.filter(unit=unit_group)
unit_forms = []
for i in unit_users:
# debug
print(i.user.first_name)
print(i.user.last_name)
unit_forms.append(UserGroupForm(instance=i))
return render(request, 'units/edit-members.html', {'unit_forms': unit_forms})
編輯members.html
{% for form in unit_forms %}
user: {{ form.user }} <br>
first name: {{ form.user.first_name }}
{% endfor %}
謝謝!我在想它是傳遞實際的對象而不是字符串表示。我通過放棄模型表單並將模型值傳遞到網頁上的表單來解決此問題,然後將結果傳回到views.py中的模型對象中。顯然還有更多的工作,但它能完成這項工作。 – Twitch