Простой способ работы с моделями Django?

Проблема

Я пытаюсь создать множество функций в своем проекте, которые позволят мне легко создавать, удалять и изменять данные с помощью Model.objects.function(), но я только что узнал, что вы не можете получить доступ к 'manager' через экземпляры: AttributeError: Manager isn't accessible via Address instances.

У меня была функция для преобразования строки модели в реальную модель, например if model == 'author: return Author, чтобы я мог использовать их в качестве входов для других функций, но, похоже, это не работает

Я тоже не могу ввести классы в функции, поэтому я не уверен, как решить эту проблему.

Любая помощь будет очень признательна.

Context

Я пытаюсь создать эти функции как команды в myproj/management/commands. В настоящее время код выглядит следующим образом:

myproj/management/commands/insert_random_data.py

from django.core.management.base import BaseCommand, CommandError
from ._private import *

class Command(BaseCommand):

    def add_arguments(self, parser):
        parser.add_argument('model', type=str)

    def handle(self, *args, **options):

        model = options['model']

        if model == "all":
            ad = format_data("address", generate_data("address"))
            ra = format_data("rating", generate_data("rating"))
                                   .
                                   .
                                   .

myproj/management/commands/_private.py

from myproj.models import *
import string
import random

def string_to_model(string):

    string = string.lower()

    if string == "author":
        model = Author
    elif string == "seller":
        model = Seller
    elif string == "address":
        model = Address
    elif string == "rating":
        model = Rating
    elif string == "product":
        model = Product
    elif string == "edition":
        model = Edition
    elif string == "tag":
        model = Tag
    elif string == "taglisting":
        model = TagListing
    elif string == "booklisting":
        model = BookListing
    elif string == "picture":
        model = Picture
    else:
        return ValueError

    return model


def format_data(model, d, foreignkey1=None, foreignkey2=None):

    model = string_to_model(model)

    if d is not None:
        if foreignkey1 != None:
            if foreignkey2 != None:
                return model(*d, foreignkey1, foreignkey2).objects
            return model(*d, foreignkey1).objects
        else:
            return model(*d).objects
    else:
        if foreignkey1 != None:
            if foreignkey2 != None:
                return model(foreignkey1, foreignkey2).objects
            return model(foreignkey1).objects
        else:
            return model.objects

genereate_data() просто возвращает список, содержащий данные для ввода в поле.

Вернуться на верх