我有django应用程序,技术人员输入服务数据,如果客户不在列表中,他们选择" NEW"在customer
字段下拉列表中,在service.new_customer
字段中输入新客户的名称,而不是添加客户。当我展示它时,我想要展示" John' Pub"如果它是现有客户,并且"新:John's Pub"如果不是。我可以通过使用id来获得这个功能 - 客户的ID称为" NEW"是1038.但是,我希望能够在逻辑上引用“" NEW"而不是id。
这是我的models.py
class Service(models.Model):
customer = models.ForeignKey(Customer)
new_customer = models.CharField(max_length=100, blank=True, null=True)
class Customer(models.Model):
name = models.CharField(max_length=200)
此view.py
有效:
def service_view(request):
for service in services:
if service.customer_id == 1038:
service.customer_combo="%s:%s"%(service.customer,service.new_customer)
else:
service.customer_combo="%s"%(service.customer)
return render(request,'template.html')
此view.py
不起作用*:
def service_view(request):
for service in services:
if service.customer == 'NEW':
service.customer_combo="%s:%s"%(service.customer,service.new_customer)
else:
service.customer_combo="%s"%(service.customer)
return render(request,'template.html')
我应该如何构建' if service.customer ==' NEW':'让它发挥作用的声明?
答案 0 :(得分:0)
if service.customer.name == 'NEW':
答案 1 :(得分:0)
您正在尝试将Customer
对象与客户的name
进行比较。它们属于不同类型,无法进行比较。
您需要执行以下操作:
service.customer == some_customer_object # compare with model object
或
service.customer.name == 'NEW' # compare with the name
或
str(service.customer) == 'NEW' # compare with the representation of the object
答案 2 :(得分:0)
这也有效,但我认为彼得的答案更好,看起来更干净
if str(service.customer) == 'NEW':