【发布时间】:2020-08-07 22:15:01
【问题描述】:
我已经创建了两个模型 -
class DID_Definition_Model(models.Model): # DID to Region-Carrier Mapping
region_carrier = models.ForeignKey(Telco_Carrier_Mapper_Model, on_delete=models.CASCADE)
did_number= models.CharField(max_length=32, validators=[alphanumeric], primary_key=True)
did_cost= models.DecimalField(max_digits=10, decimal_places=2)
created_on_date = models.DateTimeField(default=timezone.now)
class DID_Number_Assignment_Model(models.Model): #DID Number Assignment
did_selector = models.ForeignKey(DID_Definition_Model, on_delete=models.CASCADE, primary_key=True)
subscriber_department=models.CharField(max_length=200)
usage_assignment=models.ForeignKey(Usage_Assignment_Model, on_delete=models.CASCADE)
employee_email=models.EmailField()
employee_fullname=models.CharField(max_length=200)
created_on_date = models.DateTimeField(default=timezone.now)
并创建了下面的视图 -
def did_assignment_form(request, did_selector=0):
if request.method =="GET":
if did_selector==0:
form = DID_Number_Assignment_Model_Form()
else:
did_assignment_item = DID_Number_Assignment_Model.objects.get(pk=did_selector)
form = DID_Number_Assignment_Model_Form(instance=did_assignment_item)
return render(request, 'MASTERHANDLER/did_assignment_form.html', {'form':form})
else:
if id==0:
context = DID_Number_Assignment_Model.objects.values('did_selector')
if did_selector not in context:
form = DID_Number_Assignment_Model_Form(request.POST)
else:
did_assignment_item = DID_Number_Assignment_Model.objects.get(pk=did_selector)
form = DID_Number_Assignment_Model_Form(request.POST, instance = did_assignment_item)
if form.is_valid():
form.save()
return redirect('did_assignment_list')
下面的表格详细信息-
class DID_Number_Assignment_Model_Form(forms.ModelForm):
class Meta:
model = DID_Number_Assignment_Model
fields = ('did_selector', 'usage_assignment', 'employee_fullname', 'employee_email', 'subscriber_department' )
labels = {
'did_selector' : 'DID Selector',
'usage_assignment' : 'Number Usage ',
'employee_fullname' : 'Employee Full Name',
'employee_email' : 'Employee Email',
'subscriber_department' : 'Employee Department',
}
def __init__(self, *args, **kwargs):
super(DID_Number_Assignment_Model_Form,self).__init__(*args, **kwargs)
# TO SET drop down default text for a field , optional -
self.fields['did_selector'].empty_label = "Select"
self.fields['usage_assignment'].empty_label = "Select"
# TO SET a field which may be optional -
self.fields['subscriber_department'].required = False
#self.fields['region_assigned'].required = False
这种形式没有问题,但有点奇怪。如果我在 DID_Number_Assignment_Model_Form 中使用 'did_selector' 字段作为外键创建对象,则在下一个创建过程中会显示相同的 'did_selector' 值。
我的问题是,我怎样才能只显示那些没有配置的选择器值。下面的示例截图 -
【问题讨论】:
标签: django django-models django-forms django-views django-templates