2017-06-17 21 views
0

我在SO中看到了一些類似的線程,但似乎無法解決它。這裏是我的模型:「<Association:>」需要爲字段「關聯」設置一個值,然後才能使用此多對多關係:django error

class Association(models.Model): 
''' 
For members declared as groups 
''' 
member=models.ManyToManyField(User,related_name='association_user') 
name=models.CharField(max_length=50) 


def __str__(self): 
    return self.name 

class Meta: 
    ordering=('name',) 

的許多一對多的關係結束了創建,我認爲,引擎蓋下表以下定義:

association_id 
user_id 

我不知道這是否是指該字段關聯,也不是如何從我的視圖中向該表添加值。

我forms.py

class NewAssocationForm(forms.ModelForm): 
''' 
this is used to create a new form 



''' 
class Meta: 
    model=Association 
    fields=['name',] 
    labels=['Assocation Name'),] 

,我的views.py:

@login_required 
def make_new(request): 
''' 
Register a new association or corporate 
''' 

if request.method=='POST': 

    form=NewAssocationForm(request.POST or None) 

     if form.is_valid(): 

      new_association=form.save(commit=False) 
      new_association.member=request.user 


      new_association.save() 


      #add a message then redirect 

      return HttpResponseRedirect('/corporates/done/) 

     else: 
      form=NewAssocationForm(request.POST or None) 



    else: 
     form=NewAssocationForm(request.POST or None) 

return render(request, "association_new.html", locals()) 

我沒有在我的模型有一個名爲聯想場都沒有。我懷疑這是限制erorr因爲我可以從shell插入記錄到表中沒有任何問題。

這是我的追溯。

Environment: 


Request Method: POST 
Request URL: http://localhost:9000/corporates/new/ 

Django Version: 1.10 
Python Version: 3.4.0 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'widget_tweaks', 
'welcome', 
'members', 
'corporates'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "D:\pyworks\agrigo\env\lib\site-packages\django\core\handlers\exception.py" in inner 
    39.    response = get_response(request) 

File "D:\pyworks\agrigo\env\lib\site-packages\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "D:\pyworks\agrigo\env\lib\site-packages\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "D:\pyworks\agrigo\env\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view 
    23.     return view_func(request, *args, **kwargs) 

File "D:\pyworks\agrigo\env\agrigo\corporates\views.py" in make_new 
    78.    new_association.member=request.user 

File "D:\pyworks\agrigo\env\lib\site-packages\django\db\models\fields\related_descriptors.py" in __set__ 
    499.   manager = self.__get__(instance) 

File "D:\pyworks\agrigo\env\lib\site-packages\django\db\models\fields\related_descriptors.py" in __get__ 
    476.   return self.related_manager_cls(instance) 

File "D:\pyworks\agrigo\env\lib\site-packages\django\db\models\fields\related_descriptors.py" in __init__ 
    783.         (instance, self.source_field_name)) 

Exception Type: ValueError at /corporates/new/ 
Exception Value: "<Association: North Side>" needs to have a value for field "association" before this many-to-many relationship can be used. 

回答

0

非常感謝任何經歷過這篇長文章的人。顯然,我不應該指定用戶。所以,刪除該行:

new_association.member=request.user 

解決了這個問題。說得通;愚蠢的我。

相關問題