Pythonで新しく、エラーコードの解決に苦労しています。'NoneType'オブジェクトに属性がありません 'to_bytes'
私は、postgresqlデータベースに行を追加するフォームを持っています。フォームには、私のmodels.pyの中にプライマリキーであるautofieldがあります。そのような作品としての行を追加し、一意IDフィールドはintededのようにカウントアップ(1,2,3、...)
はmodels.py:
class forwards(models.Model):
uniqueid = models.AutoField(primary_key=True)
user = models.CharField(max_length = 150)
urlA = models.CharField(max_length = 254)
counterA = models.DecimalField(max_digits=19, decimal_places=0,default=Decimal('0'))
urlB = models.CharField(max_length = 254)
counterB = models.DecimalField(max_digits=19, decimal_places=0,default=Decimal('0'))
timestamp = models.DateTimeField('date created', auto_now_add=True)
shortcodeurl = models.CharField(max_length = 254)
forms.py:
class AddUrlForm(forms.ModelForm):
class Meta:
model = forwards
# fields = '__all__'
exclude = ["user", "counterA", "counterB", "shortcodeurl", "uniqueid"]
目的は、プライマリキー値(hereに従う整数である)を使用し、それを「バイト」に変換し、次にバイトコードからベースコードへの変換を行ってshortcode-urlを作成することです。このショートコードをテーブルの中に保存したい。私はviews.pyでこれをやろう
views.py
def forwardthis(request):
forwardform = AddUrlForm(request.POST or None)
if forwardform.is_valid():
forward = forwardform.save(commit=False)
forward.user = request.user.username
uniqueid_local = forward.uniqueid
print(uniqueid_local)
uniqueid_local_bytes = uniqueid_local.to_bytes(3, byteorder='big')
shortcodeurl_local = urlsafe_base64_encode(uniqueid_local_bytes)
forward.shortcodeurl = shortcodeurl_local
forward.save()
私の問題:私はこのショートのURLを作成することに成功していないと "NoneType" を取得しています
エラー。私はBigIntegerFieldとIntegerFieldにmodels.pyを変更しようとしましたが、うまくいきませんでした。 uniqueid = models.AutoField(primary_key=True)
に" default=0 "
を追加するとエラーに私は、フォームを提出した最初の時間を発生していないが、2番目のフォームを提出するときに、それは整数のように認識されていない私にはnull value in column "timestamp" violates not-null constraint
が、それはuniqueid
のように見えるエラーになります。これを修正するには?
ありがとうございました!
は魅力的です!ありがとう – radzia2