2013-12-19 32 views
0

我想根據我的Django站點上的模型或數據庫表分配一個會話變量。換句話說,在第一次使用時,我希望用戶從下拉列表中選擇一個縣,並將該縣或PK的名稱寫入會話變量。在那裏,那些數據會在觸發模板之前被拉到context_processor中。現在,我得到的錯誤是如何在Django中從model/table編寫會話變量?

(1062,「關鍵‘county_id’重複條目‘1’」)

我不知道,如果它試圖多個條目寫入到數據庫,但我並不需要任何數據庫,就像其他數據一樣。我只想要一個會話變量存儲。我相信我的問題是我的觀點,但我似乎無法做到。如果你不能說,我很新。

我有一個model.py定義,訪問縣的另一個表。

class NonUserCounty(models.Mdel): 
county = models.ForeignKey(County) 
def __unicode__(self): 
    return self.county 

我已經定義了一個form.py

class NonUserCountyForm(forms.ModelForm): 
class Meta: 
    model = NonUserCounty 

而一個views.py

def Welcome(request): 
if request.method == 'POST': 
    form = NonUserCountyForm(request.POST) 
    if form.is_valid(): 
     mycounty = form.cleaned_data['county'] 
     request.session['mycounty'] = mycounty 
     form.save() 
    return HttpResponseRedirect('/') 
else: 
    form = NonUserCountyForm() 
    context = {'form': form}  
    return render_to_response('welcome.html', context, context_instance=RequestContext(request)) 

一個背景處理器

def mynews(request):   
now = datetime.now() 
if not request.user.is_authenticated(): 
    if not "mycounty" in request.GET: 
     MyNews = News 
     county = County 
    else: 
     return HttpResponseRedirect('/welcome/')    

else:  
    user = request.user.get_profile() 
    county = user.county.all() 
    MyNews = News 

而且我的模板....

<form action="" method="post"> 
{% csrf_token %} 
{{ form }} 


<p><input type="submit" alt="register" value="Sign Up" /></p> 

回答

1

爲什麼你打電話form.save()如果你不想保存任何數據庫?只要刪除該行,它應該工作。

+0

當我刪除'form.save()'時,它不會引發錯誤,但它似乎並不實際保存會話數據。有沒有我需要用於會話變量的保存方法? –

+0

不,這應該足夠了(因爲您使用的是頂級名稱,而不是修改子字典中的值)。你在哪裏檢查更改的值? –

+0

模板級別。正如你所看到的,如果設置了變量,它應該重定向到不同的頁面,但是它不能這樣做。我試圖把這個變量放到welcome.html模板中,但是變量沒有顯示出來。 –