从Django ModelForm运行查询

时间:2013-06-13 17:00:11

标签: python sql django

我有以下现有代码可供使用(我只包括相关部分)。

models.py

class Customer(models.Model):
    customer_id = models.CharField(primary_key=True, max_length=16)
    account_phone = PhoneNumberField(null=True, blank=True, max_length=255)
    display_phone = PhoneNumberField(null=True, blank=True, max_length=255)
    .
    .
    .

customer.py

@render_to('customer/edit.html')
def edit(request, customer_id):
    customer = Customer.objects.get(customer_id=customer_id)
    if not request.POST:
        return dict(form=CustomerForm(instance=customer))
    submit = request.POST.copy()
    submit['customer_id'] = customer.customer_id
    form = CustomerForm(submit, instance=customer)
    if not form.is_valid():
        return dict(form=form)
    _f = form.save(commit=False)
    _f.save()

class CustomerForm(ModelForm):
    .
    .
    .
    def __init__(self, *args, **kwargs)
        super(CustomerForm, self).__init__(*args, **kwargs)
        .
        .
    class Meta:
        model = Customer

我需要向CustomerForm添加一个名为assigned_numbers的查询,这样我就可以从account_phonedisplay_phone获取与customer_id相关联的电话号码}。我正在坚持如何正确运行查询,并将非常感谢任何建议。如果我需要提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

您的表单是customer的模型表单,因此除非您以排除它们的方式指定字段,否则它将包含account_phonedisplay_phone的字段。

如果您需要对它们执行某些操作,除了根据您的客户实例开始填充它们之外,您还可以访问form.instance.account_phone或其他任何内容。

如果由于某种原因使用__init__方法更方便,您可以从instance访问kwargs以查找值。

def __init__(self, *args, **kwargs)
    super(CustomerForm, self).__init__(*args, **kwargs)
    if 'instance' in kwargs:
        self.assigned_numbers = (instance.account_phone, instance.display_phone)