2015-06-30 59 views
0
這樣

我得到錯誤:Django的 - Mysql的完整性錯誤1048 「列id_fleet_id」不能爲空「

1048, "Column 'id_fleet_id' cannot be null" 

這是我的models.py

class Fleet(models.Model): 
    id_fleet = models.CharField(max_length=6) 
    date_time = models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     return self.id_fleet 

class Track(models.Model): 
    name_track = models.CharField(max_length=20, null=True, blank=True) 
    id_fleet = models.ForeignKey(Fleet) 
    latitude = models.DecimalField(max_digits=16,decimal_places=2, blank=True, null=True) 
    altitude = models.DecimalField(max_digits=16,decimal_places=2, blank=True, null=True) 
    length = models.DecimalField(max_digits=16,decimal_places=2, blank=True, null=True) 
    geom = MultiPointField() 

    def __str__(self): 
     return self.name_track 

我試圖把id_fleet = models.ForeignKey(Fleet, null=True, blank=True)但顯示錯誤

'trackform' object has no attribute 'cleaned_data 

這是views.py:

def add_track(request): 
if request.method == "POST": 
    form = TrackForm(request.POST, request.FILES) 
    if form.is_valid(): 
     p = form.save(commit=False) 
     p.save() 
     return redirect('map_add.html', pk=p.pk) 
else: 
    form = TrackForm() 
return render(request,'map_add.html', {'form': form}, context_instance= RequestContext(request)) 

這是forms.py:

class TrackForm(forms.ModelForm): 
    geom = MultiPointField() 

    class Meta: 
     model = Track 
     fields = ('id_fleet','name_track','length', 'geom') 

address = TrackForm() 
address.geom = {'type': 'MultiPoint', 'coordinates': [0, 0]} 
address.save() 

你可以幫我解決這個問題呢?

+0

你究竟在哪裏得到錯誤? views.py或你的forms.py?你的forms.py代碼的目的是什麼?如果您嘗試在不調用is_valid()的情況下保存某些表單(就像您在forms.py中那樣),它會抱怨clean_data不存在,因爲它是在驗證後創建的。 – cdvv7788

+0

我在views.py中收到錯誤。我的forms.py創建數據,並使字段geom使用django geojson創建點映射使用多字段。怎麼樣? – User0511

回答

1

也許這個錯誤,因爲您遷移模型時的id_fleet_idnull參數False或未設置了,那麼以後你改變null參數的值True但這個決定不會應用到數據庫中,下面的命令運行提出:

python manage.py makemigrations 

然後運行:

python manage.py migrate 

你也可以改變可空 CH eck在數據庫中,打開您的項目數據庫,然後打開your_app_name_track表進行編輯並檢查可爲空id_fleet_id字段。

相關問題