XYZ - недопустимый аргумент ключевого слова для этой функции - PullRequest
0 голосов
/ 03 сентября 2018

Я определил и создал следующую модель:

class Links(models.Model):
    id = models.AutoField(primary_key=True, unique=True),
    longlink = models.CharField(max_length=100),
    shortlink = models.CharField(max_length=15),
    createdate = models.DateField(default=timezone.now)
    def __str__(self):
        return self.longlink

Мой код:

from appointments.models import Links
def shortlinkgen():
    import secrets
    return secrets.token_urlsafe(4) 

def DateToday():
    from datetime import datetime, date, time
    now = datetime.now()
    return now.strftime("%Y-%m-%d")

link = Links(longlink='https://mail.google.com/mail/u/0/#inbox/FMfcgxvzKQmmrZMGFJVWvsLlFPxQKhJG', shortlink=shortlinkgen(), createdate=DateToday())
link.save()
print(link)

Я получаю ошибку:

TypeError                                 Traceback (most recent call last)
<ipython-input-2-66d347994058> in <module>()
    9     return now.strftime("%Y-%m-%d")
    10 
---> 11 link = Links(longlink='https://mail.google.com/mail/u/0/#inbox/FMfcgxvzKQmmrZMGFJVWvsLlFPxQKhJG', shortlink=shortlinkgen(), createdate=DateToday())
    12 link.save()
    13 print(link)

~/.local/lib/python3.6/site-packages/django/db/models/base.py in __init__(self, *args, **kwargs)
    482                     pass
    483             for kwarg in kwargs:
--> 484                 raise TypeError("'%s' is an invalid keyword argument for this function" % kwarg)
    485         super().__init__()
    486         post_init.send(sender=cls, instance=self)

TypeError: 'longlink' is an invalid keyword argument for this function

Что не так?

1 Ответ

0 голосов
/ 03 сентября 2018
class Links(models.Model):
    id = models.AutoField(primary_key=True, unique=True),
    longlink = models.CharField(max_length=100),
    shortlink = models.CharField(max_length=15),
    createdate = models.DateField(default=timezone.now)
    def __str__(self):
        return self.longlink

Проблема связана с "," в конце каждой строки. Вы определяете поля как ссылки на их классы, а не как экземпляр этих классов. Должно быть

class Links(models.Model):
    id = models.AutoField(primary_key=True, unique=True)
    longlink = models.CharField(max_length=100,default="") #or null=True incase!
    shortlink = models.CharField(max_length=15,default="")
    createdate = models.DateField(default=timezone.now)

Вот результат: enter image description here

...