Хобрук: Ваш путь к мастерству в программировании

Django – Как удалить атрибут primary_key из поля?

Итак, у меня есть модель в моей базе данных, и теперь я понял, что нет смысла создавать первичный ключ. Я хотел бы удалить атрибут первичного ключа из поля и использовать автополе django по умолчанию в качестве первичного ключа. Как я могу это сделать? Если я попытаюсь просто удалить атрибут primary_key, он создаст новое поле id, но запрашивает значение по умолчанию. Если я попытаюсь создать новый id = autofield, он сделает то же самое.

Код ниже...

class Textbook(models.Model):
    textbook_name = models.CharField(max_length = 200)
    class_name = models.CharField(max_length = 200)
    author = models.CharField(max_length = 200)
    isbn = models.CharField(max_length = 200)
    auto_id = models.AutoField(primary_key = True)

    @property
    def NumWishes(self):
        return self.wishlist_set.count()
    @property
    def NumPosts(self):
        return self.posting_set.count()
    @property
    def DemSup(self):
        if (self.posting_set.count() != 0):
            showmethemoney = float((self.wishlist_set.count()))/(self.posting_set.count())
        else:
            showmethemoney = 0
        return showmethemoney

    class Meta:
        unique_together = ('class_name', 'isbn')

    def __str__(self):
        return self.textbook_name

Первоначально isbn был первичным ключом, но теперь я хочу добавить поле unique_together с именем класса, поэтому я удаляю атрибут первичного ключа из isbn. Таблица в настоящее время пуста, что должно упростить эту задачу.

Спасибо.


  • Я сомневаюсь, что вы можете сделать это, не уронив стол полностью. 23.09.2015
  • Итак, закомментировать все, что связано с таблицами, запустить psql и удалить таблицы, раскомментировать и сделать миграции? 23.09.2015
  • Не думаю, что вам нужно что-то комментировать. Просто удалите таблицы в psql, удалите все существующие миграции и снова выполните миграции. 23.09.2015
  • Хорошо, спасибо, попробую. 23.09.2015

Ответы:


1

Вещи, которые я пробовал перед миграцией и миграцией:

- Удаление всех таблиц и очистка миграции с помощью команды (у меня не сработало)

- Удаление всех таблиц и физический вход в папку миграции и удаление всего, кроме init.py. (Это сработало)

Удаление таблиц в базе данных postgresql можно выполнить, выполнив: DROP TABLE "tablename";

Теперь у меня есть одна миграция в моем приложении, но все работает нормально.

22.09.2015
Новые материалы

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

Это все, что вам нужно знать о Kotlin в 2022 году
Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

Текстовый графический интерфейс с Lanterna на Java
Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

Основы C# — Нулевой оператор объединения (??)
Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

Сравнение номеров версий в C++ с использованием синтаксического анализа строк
Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

В мир искусственного интеллекта…
ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..