2015-08-30 53 views
1

我有一個名爲UserAddress的模型和一個從UserAddressForm相同的模型創建的表單。我如何獲得用戶選擇的收音機選項? Django

class UserAddress(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    address = models.CharField(max_length=120) 
    address2 = models.CharField(max_length=120, null=True, blank=True) 
    city = models.CharField(max_length=120, null=True, blank=True) 
    phone = models.CharField(max_length=120) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.get_address() 
    def get_address(self): 
     return"%s,%s,%s,%s" %(self.address, self.address2,self.city,self.phone) 

我使用無線電覆選框在html中顯示所有用戶地址。我想在我的視圖中獲取用戶選擇的地址,並將其分配給我無法弄清的另一個模型實例。我怎樣才能做到這一點?

+0

你見過這個答案嗎? http://stackoverflow.com/questions/5924988/radio-buttons-in-django-forms – Jand

+0

是的,我已經看到了這一點,我正在問一些不同的東西。基本上,在我看來,我正在創建一個新的訂單,當我做new_order.shipping我想獲得用戶檢查選項,並希望分配它。我無法弄清楚如何做到這一點 – SyntaxError

回答

1

如果你的模型結構如下:

class UserAddress(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    address = models.CharField(max_length=120) 
    address2 = models.CharField(max_length=120, null=True, blank=True) 
    city = models.CharField(max_length=120, null=True, blank=True) 
    phone = models.CharField(max_length=120) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.get_address() 
    def get_address(self): 
     return"%s,%s,%s,%s" %(self.address, self.address2,self.city,self.phone) 


class Order(models.Model): 
    address = models.ForeignKey(UserAddress) 

您可以根據訂貨模型的形式,把ModelChoiceField並指定窗口小部件被RadioSelect

from django import forms 


class OrderForm(forms.Form): 
    address = forms.ModelChoiceField(
     queryset=UserAddress.objects.all(), 
     widget=forms.widgets.RadioSelect(), 
    ) 

在這種情況下,當你處理OrderForm提交你將有地址哪個用戶選擇。

+0

我也嘗試過這種方式,它的工作原理。 shipping_address = forms.ModelChoiceField( 查詢集= UserAddress.objects.filter(類型= 「用戶」), 插件= forms.RadioSelect, empty_label =無, ) – SyntaxError