我的应用的注册用户可以创建和删除费用跟踪子账户。删除时,他们可以选择要删除的帐户:
上图显示了当前的选择。我想显示帐户的名称,而不是名称所指的对象,但如何显示?
forms.py
class UdaForm(forms.Form):
# User Deleted Account Form
def __init__(self, *args, user, **kwargs):
super().__init__(*args, **kwargs)
self.user = user
self.fields['UDA_name'].queryset = UserMadeAccount.objects.filter(UMA_user=user)
UDA_name = forms.ModelChoiceField(label="Account", queryset=UserMadeAccount.objects.all())
views.py
def user_accounts(request, user_id):
if request.user.is_authenticated:
# Get all accounts of user by matching user_id
user_made_accounts = specific_umacs(user_id)
user_data = [i for i in user_made_accounts]
if "UMA_form_name" in request.POST:
if request.method == 'POST':
uma_form = UmaForm(request.POST)
uda_form = UdaForm(user=request.user)
if uma_form.is_valid():
# Adds new user made account to the DB
add_uma(uma_form, request.user)
# Get all accounts of user by matching user_id
user_made_accounts = specific_umacs(user_id)
user_data = [i for i in user_made_accounts]
return render(request, 'user_accounts.html', {"uma_form": uma_form, "uda_form": uda_form, "user_data": user_data})
if "UDA_name" in request.POST:
if request.method == 'POST':
uda_form = UdaForm(request.POST, user=request.user)
uma_form = UmaForm()
if uda_form.is_valid():
# Delete user made account from DB
delete_uma(uda_form=uda_form, user_obj=request.user)
# Get all accounts of user by matching user_id
user_made_accounts = specific_umacs(user_id)
user_data = [i for i in user_made_accounts]
return render(request, 'user_accounts.html', {"uma_form": uma_form, "uda_form": uda_form, "user_data": user_data})
if request.method == 'GET':
uma_form = UmaForm()
uda_form = UdaForm(user=request.user)
else:
uma_form = UmaForm()
uda_form = UdaForm(user=request.user)
return render(request, 'user_accounts.html', {"uma_form": uma_form, "uda_form": uda_form, "user_data": user_data})
else:
return render(request, 'please_authenticate.html')
user_accounts.html
{% extends "base.html" %}
{% block page_content %}
...
<!-- Delete Account Modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-delete_me-modal-lg">Delete Account</button>
<div class="modal fade bd-delete_me-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Delete one of your accounts</h5>
</div>
<div class="modal-body">
<form action="" method="POST">
{% csrf_token %}
<div class="form-row">
<div class="col">
{{ uda_form.UDA_name|as_crispy_field }}
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Delete</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal END -->
...
{% endblock page_content %}
答案 0 :(得分:1)
您只需将 __str__
方法 [doc] 添加到您的 UserMadeAccount
模型
def __str__(self):
return self.field_name
<块引用>
每当您对对象调用 str() 时,都会调用 str() 方法。 Django 在许多地方使用 str(obj)。最值得注意的是,要显示 Django 管理站点中的一个对象,并作为插入到 模板显示对象时。因此,你应该总是返回一个 来自 str() 的模型的漂亮的、人类可读的表示 方法。