2013-06-13 1 views
0

다음 작업 코드가 있습니다 (관련 부분 만 포함).Django ModelForm에서 쿼리 실행

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

CustomerForm 날 account_phonedisplay_phone에서 전화 번호를 얻을 수 assigned_numbers 같은 전화에 내가 쿼리를 추가 할 필요가
@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 

customer_id과 연결된 쿼리를 올바르게 실행하는 방법에 대해 고민하고 있으며 제안 사항에 크게 감사 할 것입니다. 추가 정보를 제공해야하는 경우 알려 주시기 바랍니다.

답변

0

양식은 customer의 모델 양식이므로 필드를 제외하는 방식으로 지정하지 않는 한 account_phonedisplay_phone 필드가 이미 있습니다.

고객 인스턴스에 따라 채워지기 시작한 입력란 외에도 뭔가를해야하는 경우 form.instance.account_phone 또는 기타 항목에 액세스 할 수 있습니다.

어떤 이유로 더 편리하면 __init__ 메서드에서 instancekwargs에 액세스하여 값을 조회 할 수 있습니다.

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

고맙습니다. 정확히 내가 필요로하는 것. – avaholic

관련 문제