Как создать объект для модели из консоли, подобно тому, как Django сделал команду createuperuser - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь создать объект из консоли, но не уверен, как это настроить.Это моя модельManager:

class MajorManager(models.Manager):

def __str__(self):
    return self.name 

def createMajor(self, name):
    try:
        name = name.lower()
        major = self.create(name=name)    
    except IntegrityError:
        print("This major has already been created")

А вот модель:

class Majors(models.Model):
name = models.CharField(max_length=30, unique=True)
objects = MajorManager()

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете пойти по этому маршруту, используя API Django - оформить документы

Сначала создайте оболочку:

python manage.py shell

Затем вы можетеимпортируйте свои модели и делайте базовые CRUD на них.

>>> from polls.models import Choice, Question  # Import the model classes we just wrote.

# No questions are in the system yet.
>>> Question.objects.all()
<QuerySet []>

# Create a new Question.
# Support for time zones is enabled in the default settings file, so
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
# instead of datetime.datetime.now() and it will do the right thing.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())

# Save the object into the database. You have to call save() explicitly.
>>> q.save()

Или, в качестве альтернативы, вы можете попробовать маршрут dbshell, вот документацию .

Эта команда предполагает, что программы находятся в вашем PATH, поэтомучто простой вызов имени программы (psql, mysql, sqlite3, sqlplus) найдет программу в нужном месте.Нет способа указать местоположение программы вручную.

Вы не можете использовать ORM в Django, это чистый SQL, поэтому это будут такие инструкции, как:

CREATE TABLE user (
  Id Int,
  Name Varchar
);
...