iT邦幫忙

1

資料庫新增資料出現問題

  • 分享至 

  • xImage

請教各位大大,為何我在使用sql直接新增資料時會說我的欄位violates not-null constraint
我在django的model欄位中設置的是auto_now_add,使用shell時可以成功新增,使用sql新增就會出錯,是model的欄位設計錯誤嗎,還是下sql時有另外的寫法?

錯誤訊息:
https://ithelp.ithome.com.tw/upload/images/20230112/20142006ikxUVFAYrd.png

這邊是我的model

from django.db import models

# Create your models here.
class Author(models.Model):
    name = models.CharField(max_length=20)

    def __str__(self) -> str:
        return self.name


class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    create_at = models.DateTimeField(auto_now_add=True)

    def __str__(self) -> str:
        return self.name
froce iT邦大師 1 級 ‧ 2023-01-12 22:22:43 檢舉
auto_now_add是在Django 會幫你加上創建日期,database裡只是一個非空的datetime欄位而已,所以你要用db的命令列去新增需要自己填時間
了解了 謝謝~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2023-01-13 08:31:45
最佳解答

只接下命令跟透過model下命令當然會不一樣了。

透過model下命令。會自動你將日期的欄位資料帶入。
但如果你是手動下命令,你就得自行將日期也一起建立才行。

django我不熟,但其實在其它相關語言上。也曾經碰過有人也跟你一樣的問題。
大多數都是因為,使用的DB控制。並非是model而是db控制。
所以導致了原本model應用的東西,如你的auto_now_add。其實並沒有發揮作用。

很多人很常沒搞懂ORM還是DB QUERY。甚至會將其視為一樣的東西。
其實還是有差別的。

了解了 謝謝~

我要發表回答

立即登入回答