Django : Создание формы для выпадающего списка в зависимости от ID пользователя и модели
Я новичок в Django. Я хочу создать форму для выпадающего списка. Выпадающий список должен показывать различные варианты в зависимости от пользователя и модели. Я сделал кое-что непосредственно в view.py, что отображает варианты выбора без использования формы из Django, и она не сохраняет их. Так что это не идеально для того, что я хочу сделать после POST.
Вот мои Models.py
class TblAadJntGroup(models.Model):
id = models.AutoField(db_column='ID', primary_key=True) # Field name made lowercase.
id_aadgroup = models.IntegerField(db_column='ID_AADGroup', blank=True, null=True) # Field name made lowercase.
id_aaduser = models.IntegerField(db_column='ID_AADUser', blank=True, null=True) # Field name made lowercase.
createdon = models.DateTimeField(db_column='CreatedOn', blank=True, null=True) # Field name made lowercase.
createdby = models.CharField(db_column='CreatedBy', max_length=255, blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'tbl_AAD_jnt_Group'
class TblAadGroups(models.Model):
id = models.AutoField(db_column='ID', primary_key=True) # Field name made lowercase.
idcustomer = models.IntegerField(db_column='IDCustomer', blank=True, null=True) # Field name made lowercase.
displayname = models.CharField(db_column='DisplayName', max_length=255, blank=True, null=True) # Field name made lowercase.
timestampm = models.DateTimeField(db_column='TimeStampm', blank=True, null=True) # Field name made lowercase.
username = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'tbl_AAD_Groups'
Итак, чтобы получить данные, которые я хочу отобразить в выпадающем списке. Я начинаю получать ID пользователя. Затем из ID пользователя я получаю список ID клиентов, к которым пользователь имеет доступ в модели "TblAadJntGroup". Наконец, я определяю список клиентов, получая корреляцию этого списка ID в модели "TblAadGroups".
views.py :
@authenticated_user
def upload(request):
# INITIALIZE THE CONTEXT TO FIX THE AUTHENTICATION
context = initialize_context(request)
############################################################
# GET THE LIST OF CLIENTS
############################################################
# IDENTIFY THE ID OF THE USER
ID_User = request.user.id
# GET THE LIST OF THE ID OF THE CLIENTS
ID_Client_List = TblAadJntGroup.objects.filter(id_aaduser=ID_User).values_list('id_aadgroup', flat=True)
ID_Client_List = list(ID_Client_List)
client_list = TblAadGroups.objects.all().filter(id__in=ID_Client_List)
if request.method == 'POST':
id_customer_request = request.POST.get("client")
print(id_customer_request)
############################################################
# LOAD THE CONTEXT
############################################################
context['clients'] = client_list
return render(request, 'base/upload.html', context)
upload.html
{% extends 'home.html' %}
{% load static %}
{% block content %}
<link rel="stylesheet" href="{% static 'test12.css' %}">
<div class="upload-app">
<div class="selectclients">
<h2>Select The Company</h2>
<form method="post" id="SelectCompany">
{% csrf_token %}
<select class="client" name="client">
<option selected="selected" disabled>Objects on page:</option>
{% for client in clients %}
<option value="{{ client.idcustomer }}">{{ client.groupname }}</option>
{% endfor %}
</select>
<input type="submit" value="Select">
</form>
</div>
</div>
{% endblock %}
Как я могу переписать это непосредственно в форме, если это возможно.
Спасибо за помощь!