Найти стол по названию - Django - PullRequest
0 голосов
/ 25 мая 2020

Как мне найти таблицу по имени в коде python?

Пример:

class AlexAlex(models.Model):
    title =  models.CharField(max_length=255)
    message = models.TextField()
    dataMsg = models.DateField()
    fromMsg = models.CharField(max_length=255)
    readMsg = models.BooleanField(default=False)
    def __str__(self):
        return self.title

и теперь я хочу найти имя класса, так как у него есть имя пользователя.

Пример в коде:

UserLogged = "AlexAlex" or UserLogged = "Alex alex" + "s" // Example name user logged
Table = functionWhichFindTablebyName(UserLogged) // Find table by name 
Table.objects.get.all()

Могу ли я сделать это? Я хочу, чтобы это использовалось для «пользователей почтовых ящиков». У меня много таблиц, и я не хочу писать руководство по импорту / с

1 Ответ

1 голос
/ 25 мая 2020

Я чувствую, что это отражает плохо реализованную вещь, которая требует секунды. Похоже, вы создаете таблицу для каждого пользователя и сохраняете там сообщения для этого пользователя, тогда как вы должны создать таблицу Message, связанную с User. При этом, если вы хотите получить объект (таблицу) из модуля:

from any_app import models

getattr(models, "AlexAlex").objects.all()

Django также предлагает ContentTypes , что позволяет вам делать то, что вы просите для того, чтобы не импортировать модели. Например,

from django.contrib.contenttypes.models import ContentType

obj = ContentType.objects.get(app_label="any_app", model="alexalex")
obj.model_class().objects.all()
# Or p.get_all_objects_for_this_type(kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...