Как создать тройную объединяющую таблицу с Django

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

9
задан phloopy 16 September 2008 в 14:31
поделиться

3 ответа

записи zacherates:

Я смоделировал бы Роль класса ассоциации между Пользователями и Роли (...)

Я был бы также reccomed это решение, но можно также использовать немного синтаксического сахара, обеспеченного Django: отношение ManyToMany с дополнительными полями.

Пример:

class User(models.Model):
    name = models.CharField(max_length=128)

class Event(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(User, through='Role')

    def __unicode__(self):
        return self.name

class Role(models.Model):
    person = models.ForeignKey(User)
    group = models.ForeignKey(Event)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
8
ответ дан 4 December 2019 в 20:26
поделиться

Я рекомендовал бы просто создать совершенно отдельную модель для этого.

class Assignment(Model):
    user = ForeignKey(User)
    role = ForeignKey(Role)
    event = ForeignKey(Event)

Это позволяет Вам сделать весь обычный образцовый материал, такой как

user.assignment_set.filter(role__name="Chaperon")
role.assignment_set.filter(event__name="Silly Walkathon")

Единственная оставленная вещь состоит в том, чтобы осуществить Ваше one-role-per-user-per-event ограничение. Можно сделать это в классе Присвоения или переопределением метода сохранения (http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model-methods) или использованием сигналов (http://docs.djangoproject.com/en/dev/topics/signals/)

3
ответ дан 4 December 2019 в 20:26
поделиться

Я смоделировал бы Роль класса ассоциации между Пользователями и Роли, таким образом,

class User(models.Model):
     ...

class Event(models.Model):
     ...

class Role(models.Model):
     user = models.ForeignKey(User)
     event = models.ForeignKey(Event)

И осуществите одну роль на пользователя на событие или в менеджере или в ограничениях SQL.

0
ответ дан 4 December 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: